From nobody Tue Jun 23 08:13:12 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A788BC4332F for ; Tue, 8 Mar 2022 15:45:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347961AbiCHPqs (ORCPT ); Tue, 8 Mar 2022 10:46:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36404 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347891AbiCHPqr (ORCPT ); Tue, 8 Mar 2022 10:46:47 -0500 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25B8D4EF65; Tue, 8 Mar 2022 07:45:49 -0800 (PST) Received: from kwepemi500020.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4KCfgF3TP2zbbxl; Tue, 8 Mar 2022 23:40:57 +0800 (CST) Received: from kwepemm600014.china.huawei.com (7.193.23.54) by kwepemi500020.china.huawei.com (7.221.188.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.18; Tue, 8 Mar 2022 23:45:45 +0800 Received: from kwepeml500003.china.huawei.com (7.221.188.182) by kwepemm600014.china.huawei.com (7.193.23.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Tue, 8 Mar 2022 23:45:45 +0800 Received: from kwepeml500003.china.huawei.com ([7.221.188.182]) by kwepeml500003.china.huawei.com ([7.221.188.182]) with mapi id 15.01.2308.021; Tue, 8 Mar 2022 23:45:45 +0800 From: "Zhangjiantao(Kirin,Nanjing)" To: Bjorn Helgaas , "robh@kernel.org" CC: "jingoohan1@gmail.com" , "gustavo.pimentel@synopsys.com" , "lorenzo.pieralisi@arm.com" , "kw@linux.com" , "linux-pci@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "zhangjianrong (E)" Subject: [PATCH2] PCI: dwc: solve returning success but actually failed Thread-Topic: [PATCH2] PCI: dwc: solve returning success but actually failed Thread-Index: AdgzA0SpiPZDE9M0Qv2renDvQbfpDw== Date: Tue, 8 Mar 2022 15:45:45 +0000 Message-ID: <0dcdea9c559040509dd443ee75de75a1@huawei.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.136.108.160] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When dma_mapping_error() returns error because of no enough memory availabl= e, dw_pcie_host_init() will return success, which will mislead the callers. Fixes: 07940c369a6b ("PCI: dwc: Fix MSI page leakage in suspend/resume") Signed-off-by: Jiantao Zhang Signed-off-by: Jianrong Zhang --- =C2=A0drivers/pci/controller/dwc/pcie-designware-host.c | 3 ++- =C2=A01 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index f4755f3a03be..9dcb51728dd1 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -390,7 +390,8 @@ int dw_pcie_host_init(struct pcie_port *pp) =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 sizeof(pp->msi_msg), =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 DMA_FROM_DEVICE, =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 DMA_ATTR_SKIP_CPU_SYNC); -=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if (dma_mapping_e= rror(pci->dev, pp->msi_data)) { +=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 ret =3D dma_mappi= ng_error(pci->dev, pp->msi_data); +=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if (ret) { =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 dev_err(pci->dev, "Failed to map MSI data\n"); =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 pp->msi_data =3D 0; =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2= =A0=C2=A0 goto err_free_msi; -- 2.17.1 Jiantao Zhang On 2022/3/5 5:39, Bjorn Helgaas wrote: > On Fri, Mar 04, 2022 at 12:06:10PM +0000, Zhangjiantao(Kirin,Nanjing) wro= te: >> When dma_mapping_error returns error because of no enough memory availab= le, dw_pcie_host_init will return success, which will mislead the callers. > Wrap to fit in 75 columns, add "()" after function names. >> Signed-off-by: zhangjianrong >> Signed-off-by: zhangjiantao >> >> --- >> =C2=A0drivers/pci/controller/dwc/pcie-designware-host.c | 1 + >> =C2=A01 file changed, 1 insertion(+) >> >> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c >> b/drivers/pci/controller/dwc/pcie-designware-host.c >> index f4755f3a03be..ac691d733848 100644 >> --- a/drivers/pci/controller/dwc/pcie-designware-host.c >> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c >> @@ -393,6 +393,7 @@ int dw_pcie_host_init(struct pcie_port *pp) >> =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if (dma= _mapping_error(pci->dev, pp->msi_data)) { >> =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 dev_err(pci->dev, "Failed to map MSI data\n"); >> =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 pp->msi_data =3D 0; >> +=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0= =C2=A0 ret =3D -1; > We should save the return value from dma_mapping_error() and return=20 > *that*, not -1. > > Whitespace error (indent with tabs, same as the surrounding code). > >> =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0= =C2=A0=C2=A0 goto err_free_msi; >> =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } >> =C2=A0=C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } >> -- >> 2.17.1 >> > .