From: Bjorn Helgaas <helgaas@kernel.org> To: Wei Yongjun <weiyongjun1@huawei.com> Cc: Kishon Vijay Abraham I <kishon@ti.com>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Bjorn Helgaas <bhelgaas@google.com>, linux-omap@vger.kernel.org, linux-pci@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: Re: [PATCH -next] PCI: dra7xx: Fix potential NULL dereference Date: Thu, 18 Jan 2018 14:42:24 +0000 [thread overview] Message-ID: <20180118144224.GF53542@bhelgaas-glaptop.roam.corp.google.com> (raw) In-Reply-To: <1516284037-81537-1-git-send-email-weiyongjun1@huawei.com> On Thu, Jan 18, 2018 at 02:00:37PM +0000, Wei Yongjun wrote: > platform_get_resource_byname() may fail and return NULL, so we should > better check it's return value to avoid a NULL pointer dereference a > bit later in the code. > > This is detected by Coccinelle semantic patch. > > @@ > expression pdev, res, n, t, e, e1, e2; > @@ > > res = platform_get_resource_byname(pdev, t, n); > + if (!res) > + return -EINVAL; > ... when != res = NULL > e = devm_ioremap(e1, res->start, e2); This pattern of: platform_get_resource_byname devm_ioremap is extremely common and could perhaps be factored out. There are already a few private versions, e.g., request_and_map(), msm_ioremap(), ssi_get_iomem(). request_and_map() also includes devm_request_mem_region(), which probably *should* be included but usually seems to be omitted. > Fixes: 608793e27b33 ("PCI: dwc: dra7xx: Add EP mode support") > Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> > --- > drivers/pci/dwc/pci-dra7xx.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c > index 8bf7c27..aafded8 100644 > --- a/drivers/pci/dwc/pci-dra7xx.c > +++ b/drivers/pci/dwc/pci-dra7xx.c > @@ -409,11 +409,15 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx, > ep->ops = &pcie_ep_ops; > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ep_dbics"); > + if (!res) > + return -EINVAL; > pci->dbi_base = devm_ioremap(dev, res->start, resource_size(res)); > if (!pci->dbi_base) > return -ENOMEM; > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ep_dbics2"); > + if (!res) > + return -EINVAL; > pci->dbi_base2 = devm_ioremap(dev, res->start, resource_size(res)); > if (!pci->dbi_base2) > return -ENOMEM; > @@ -462,6 +466,8 @@ static int __init dra7xx_add_pcie_port(struct dra7xx_pcie *dra7xx, > return ret; > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "rc_dbics"); > + if (!res) > + return -EINVAL; > pci->dbi_base = devm_ioremap(dev, res->start, resource_size(res)); > if (!pci->dbi_base) > return -ENOMEM; >
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org> To: Wei Yongjun <weiyongjun1@huawei.com> Cc: Kishon Vijay Abraham I <kishon@ti.com>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Bjorn Helgaas <bhelgaas@google.com>, linux-omap@vger.kernel.org, linux-pci@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: Re: [PATCH -next] PCI: dra7xx: Fix potential NULL dereference Date: Thu, 18 Jan 2018 08:42:24 -0600 [thread overview] Message-ID: <20180118144224.GF53542@bhelgaas-glaptop.roam.corp.google.com> (raw) In-Reply-To: <1516284037-81537-1-git-send-email-weiyongjun1@huawei.com> On Thu, Jan 18, 2018 at 02:00:37PM +0000, Wei Yongjun wrote: > platform_get_resource_byname() may fail and return NULL, so we should > better check it's return value to avoid a NULL pointer dereference a > bit later in the code. > > This is detected by Coccinelle semantic patch. > > @@ > expression pdev, res, n, t, e, e1, e2; > @@ > > res = platform_get_resource_byname(pdev, t, n); > + if (!res) > + return -EINVAL; > ... when != res == NULL > e = devm_ioremap(e1, res->start, e2); This pattern of: platform_get_resource_byname devm_ioremap is extremely common and could perhaps be factored out. There are already a few private versions, e.g., request_and_map(), msm_ioremap(), ssi_get_iomem(). request_and_map() also includes devm_request_mem_region(), which probably *should* be included but usually seems to be omitted. > Fixes: 608793e27b33 ("PCI: dwc: dra7xx: Add EP mode support") > Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com> > --- > drivers/pci/dwc/pci-dra7xx.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c > index 8bf7c27..aafded8 100644 > --- a/drivers/pci/dwc/pci-dra7xx.c > +++ b/drivers/pci/dwc/pci-dra7xx.c > @@ -409,11 +409,15 @@ static int __init dra7xx_add_pcie_ep(struct dra7xx_pcie *dra7xx, > ep->ops = &pcie_ep_ops; > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ep_dbics"); > + if (!res) > + return -EINVAL; > pci->dbi_base = devm_ioremap(dev, res->start, resource_size(res)); > if (!pci->dbi_base) > return -ENOMEM; > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ep_dbics2"); > + if (!res) > + return -EINVAL; > pci->dbi_base2 = devm_ioremap(dev, res->start, resource_size(res)); > if (!pci->dbi_base2) > return -ENOMEM; > @@ -462,6 +466,8 @@ static int __init dra7xx_add_pcie_port(struct dra7xx_pcie *dra7xx, > return ret; > > res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "rc_dbics"); > + if (!res) > + return -EINVAL; > pci->dbi_base = devm_ioremap(dev, res->start, resource_size(res)); > if (!pci->dbi_base) > return -ENOMEM; >
next prev parent reply other threads:[~2018-01-18 14:42 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-01-18 13:54 [PATCH -next] PCI: dra7xx: Fix potential NULL dereference Wei Yongjun 2018-01-18 14:00 ` Wei Yongjun 2018-01-18 14:00 ` Wei Yongjun 2018-01-18 14:42 ` Bjorn Helgaas [this message] 2018-01-18 14:42 ` Bjorn Helgaas 2018-01-18 14:54 ` Ladislav Michl 2018-01-18 14:54 ` Ladislav Michl 2018-01-18 18:35 ` Bjorn Helgaas 2018-01-18 18:35 ` Bjorn Helgaas 2018-01-18 21:34 ` Ladislav Michl 2018-01-18 21:34 ` Ladislav Michl 2018-01-19 1:54 ` weiyongjun (A) 2018-01-19 1:54 ` weiyongjun (A) 2018-01-19 1:54 ` weiyongjun (A) 2018-01-19 5:56 ` Julia Lawall 2018-01-19 5:56 ` Julia Lawall 2018-01-19 7:03 ` Ladislav Michl 2018-01-19 7:03 ` Ladislav Michl 2018-01-19 9:16 ` Ladislav Michl 2018-01-19 9:16 ` Ladislav Michl 2018-01-19 9:58 ` Ladislav Michl 2018-01-19 9:58 ` Ladislav Michl 2018-01-19 17:06 ` Ladislav Michl 2018-01-19 17:06 ` Ladislav Michl 2018-01-20 0:16 ` Ladislav Michl 2018-01-20 0:16 ` Ladislav Michl 2018-11-16 11:51 ` Lorenzo Pieralisi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180118144224.GF53542@bhelgaas-glaptop.roam.corp.google.com \ --to=helgaas@kernel.org \ --cc=bhelgaas@google.com \ --cc=kernel-janitors@vger.kernel.org \ --cc=kishon@ti.com \ --cc=linux-omap@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=weiyongjun1@huawei.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.