Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp20969932rwd; Thu, 29 Jun 2023 09:12:44 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ41Nz7/kkrHfgsvWFXhLHWiHRVnkYrUeB8gcLScjHxH4jX61zUfel15yNZUQUMk6Vj27jYF X-Received: by 2002:a17:90b:291:b0:262:ec04:4ff7 with SMTP id az17-20020a17090b029100b00262ec044ff7mr6018400pjb.16.1688055163990; Thu, 29 Jun 2023 09:12:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688055163; cv=none; d=google.com; s=arc-20160816; b=Mfe7uB2EpdxPFQxh5dcrs2hWPHGW5ewZYtuSl5sMf3Q3cE0VU+kSPOoNY6ehw01RqY bs+STPTWo3lM6txaiOavGvyFiTapVGjYQKs0A3xiJzkkSRKmvOsTdmiUHZx3Jt/q59yf Zciev4zcPX9INShioRBvLzf5x+CYy7bGnrTW9L39WW4duYOEsA/13CC9WEpG1TsBEIl7 9uWX62HsCqMaFQQP8Ku9ORaFS0qZknR3H1oN8ORl4ebqAvWqRJpapjdNCMMiRb39ktgS HxQbdgNzh3pnnIkuMrMM0j5Zl2IYB5It/GmKAuHHgai222locbkDscGPXaKsSyI1Otpz 31sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=H6D4ElwAUoWFBYqkUQqWeJ1DJdnnjS0BvVr/YXHqXEc=; fh=8OQ1KAOjV62ofPC1jBt/J+btWhDS2lmRdQ5vWwBtEBI=; b=WYylMUwbvPtxkvrfzWnvTq98AKnF2Za/f7Q0YijmFd57vr+olFQ8br9sONFDs3dArx 7IOVIRaxLy/u6b7sO2RilTgAB7ah26JZetyP/hL5rQJO7OQ+PObEb+y2FZ0gD8bzm/nt KjFdSxG5b4LkdJo6/vGUMEXL4cnVwyFFrtVd3lv1bd4lNy/+nXE93j64vZztbONuGeQh gi2Fir0EsqZ5hCuql+q8e0ZsNQji5VDCT/x4NZGingS1z/8avKXJTfTDX9t7d9xOsgf3 j7ODT0rkubEzwf2De3uYVhZRqQIbk4cAN/c05ItoLY553waoUj8wyuzugVXEF7UlwHGQ LMug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="YDrPc/2X"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x4-20020a17090a9dc400b0026343b62cdasi2564181pjv.154.2023.06.29.09.12.30; Thu, 29 Jun 2023 09:12:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b="YDrPc/2X"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232000AbjF2Pia (ORCPT + 99 others); Thu, 29 Jun 2023 11:38:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229575AbjF2Pi3 (ORCPT ); Thu, 29 Jun 2023 11:38:29 -0400 Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDABC210B; Thu, 29 Jun 2023 08:38:27 -0700 (PDT) Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-5440e98616cso506581a12.0; Thu, 29 Jun 2023 08:38:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688053107; x=1690645107; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=H6D4ElwAUoWFBYqkUQqWeJ1DJdnnjS0BvVr/YXHqXEc=; b=YDrPc/2X9qLtEtsT0xmXJxGrAc0BiRFYkcO5iGZ9empNJhcIlm0Vw1phUi2vX0qWpY j8QLCqyo5q2P0XsNJX6pbTX/TsWdzjC0dZx8MzpcFi4DCler2Rn6ZF2f9Wf/MdIlIPMV YnCsDh0sSjokdcUAbalfAwQ4ELvRTOvOYRZt5jqQkJ1/5L1uIvmgyGU5KBfhq3Wg+FAv INHwu6Wpel9yKr0nNdyf+wzn9RRmC1gQLKtgmbrAExilxOWPr7bKayiY0tErhQW+uA2U +aK9Hkuhz5ZBUXQxvjyaP/1j8ptAnkJBlCt67w2zQ3QFQUykgv/mgsazYTyD7HDJO1lj qcBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688053107; x=1690645107; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H6D4ElwAUoWFBYqkUQqWeJ1DJdnnjS0BvVr/YXHqXEc=; b=bax9BtRbwg56Q3aFcA0LFN6ZzjMZP2u7uPNFZXnxZoiTrUcTIIl3RQGR05xS1aAIZ7 x7PtLiQWeGZm5Mmc1y7ZN0HcxZCnT5XT+Gtb7rW9vrMbYnB5sme/ib3M00uATXoLVyY9 Klj4EYKSJ7rt4AQnfB9oldjAW+mAXvadoyHixUTbJ+G5f8QRO2X4YAAXKB6sEcrOOEG0 JszK4IxrbzDUCOBZL0m/4MBXbhx+QQAyXlzD578ELG+erzkSy8/KUjpCsxFJ/ntrVml9 98F4v92M37hjtOytps5QBnweJYFhELxpwscEtb1QpCMPB9iZxl6eY1oVw/7x70i2ht0k fwIA== X-Gm-Message-State: AC+VfDzxGgfsJurO+z8rEukNyD8/RhoYoaCnCA/dVuZsd+9H62sIHFZK UFkbcXGR6+qPwCMVqlCb3cGsdy4MSDem+rRhSs7/uBam7Fednw== X-Received: by 2002:a05:6a20:12ca:b0:122:cb18:2e8c with SMTP id v10-20020a056a2012ca00b00122cb182e8cmr292225pzg.6.1688053107143; Thu, 29 Jun 2023 08:38:27 -0700 (PDT) MIME-Version: 1.0 References: <20230629134306.95823-1-jonas.gorski@gmail.com> In-Reply-To: From: Jonas Gorski Date: Thu, 29 Jun 2023 17:38:15 +0200 Message-ID: Subject: Re: [PATCH] spi: bcm-qspi: return error if neither hif_mspi nor mspi is available To: Kamal Dasu Cc: Kamal Dasu , Broadcom internal kernel review list , Mark Brown , linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 29 Jun 2023 at 17:07, Kamal Dasu wrote: > > On Thu, Jun 29, 2023 at 9:43=E2=80=AFAM Jonas Gorski wrote: > > > > If neither a "hif_mspi" nor "mspi" resource is present, the driver will > > just early exit in probe but still return success. Apart from not doing > > anything meaningful, this would then also lead to a null pointer access > > on removal, as platform_get_drvdata() would return NULL, which it would > > then try to dereferce when trying to unregister the spi master. > > > > Fix this by unconditionally calling devm_ioremap_resource(), as it can > > handle a NULL res and will then return a viable ERR_PTR() if we get one= . > > > > The "return 0;" was previously a "goto qspi_resource_err;" where then > > ret was returned, but since ret was still initialized to 0 at this plac= e > > this was a valid conversion in 63c5395bb7a9 ("spi: bcm-qspi: Fix > > use-after-free on unbind"). The issue was not introduced by this commit= , > > only made more obvious. > > > > Fixes: fa236a7ef240 ("spi: bcm-qspi: Add Broadcom MSPI driver") > > Signed-off-by: Jonas Gorski > > --- > > Found by looking a the driver while comparing it to its bindings. > > > > Only build tested, not runtested. > > > > drivers/spi/spi-bcm-qspi.c | 10 +++------- > > 1 file changed, 3 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/spi/spi-bcm-qspi.c b/drivers/spi/spi-bcm-qspi.c > > index 6b46a3b67c41..d91dfbe47aa5 100644 > > --- a/drivers/spi/spi-bcm-qspi.c > > +++ b/drivers/spi/spi-bcm-qspi.c > > @@ -1543,13 +1543,9 @@ int bcm_qspi_probe(struct platform_device *pdev, > > res =3D platform_get_resource_byname(pdev, IORESOURCE_M= EM, > > "mspi"); > > > > - if (res) { > > - qspi->base[MSPI] =3D devm_ioremap_resource(dev, res); > > - if (IS_ERR(qspi->base[MSPI])) > > - return PTR_ERR(qspi->base[MSPI]); > > - } else { > > - return 0; > > - } > > I would rather just do this in the else case > > } else { > - return 0; > + return -ENODEV; > } > > The change below does not check the return of > platform_get_resource_byname() in my opinion rather relies on > devm_ioremap_resource() doing the right thing. This is how devm_ioremap_resource() is intended to be used, see e.g. the example in its kernel documentation: https://elixir.bootlin.com/linux/latest/source/lib/devres.c#L167 So I don't see what's wrong with relying on functions doing the right thing= . Also AFAIU the appropriate return code in this case would be rather -EINVAL, not -ENODEV. > > > + qspi->base[MSPI] =3D devm_ioremap_resource(dev, res); > > + if (IS_ERR(qspi->base[MSPI])) > > + return PTR_ERR(qspi->base[MSPI]); > > > > res =3D platform_get_resource_byname(pdev, IORESOURCE_MEM, "bsp= i"); > > if (res) { > > -- > > 2.34.1 > > Regards, Jonas