2022-04-29 23:30:55

by Yang Yingliang

[permalink] [raw]
Subject: [PATCH] PCI: qcom-ep: check return value after calling platform_get_resource_byname()

If platform_get_resource_byname() fails, 'mmio_res' will be set to null pointer,
it will cause null-ptr-deref when it used in qcom_pcie_perst_deassert(), so we
need check the return value.

Fixes: f55fee56a631 ("PCI: qcom-ep: Add Qualcomm PCIe Endpoint controller driver")
Signed-off-by: Yang Yingliang <[email protected]>
---
drivers/pci/controller/dwc/pcie-qcom-ep.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
index 6ce8eddf3a37..becb0c2ff870 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
@@ -416,6 +416,10 @@ static int qcom_pcie_ep_get_io_resources(struct platform_device *pdev,

pcie_ep->mmio_res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
"mmio");
+ if (!pcie_ep->mmio_res) {
+ dev_err(dev, "Failed to get mmio resource\n");
+ return -EINVAL;
+ }

syscon = of_parse_phandle(dev->of_node, "qcom,perst-regs", 0);
if (!syscon) {
--
2.25.1


2022-05-01 14:56:25

by Andrew Halaney

[permalink] [raw]
Subject: Re: [PATCH] PCI: qcom-ep: check return value after calling platform_get_resource_byname()

On Fri, Apr 29, 2022 at 04:07:40PM +0800, Yang Yingliang wrote:
> If platform_get_resource_byname() fails, 'mmio_res' will be set to null pointer,
> it will cause null-ptr-deref when it used in qcom_pcie_perst_deassert(), so we
> need check the return value.
>
> Fixes: f55fee56a631 ("PCI: qcom-ep: Add Qualcomm PCIe Endpoint controller driver")
> Signed-off-by: Yang Yingliang <[email protected]>
> ---
> drivers/pci/controller/dwc/pcie-qcom-ep.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
> index 6ce8eddf3a37..becb0c2ff870 100644
> --- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
> +++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
> @@ -416,6 +416,10 @@ static int qcom_pcie_ep_get_io_resources(struct platform_device *pdev,
>
> pcie_ep->mmio_res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
> "mmio");
> + if (!pcie_ep->mmio_res) {
> + dev_err(dev, "Failed to get mmio resource\n");
> + return -EINVAL;
> + }
>
> syscon = of_parse_phandle(dev->of_node, "qcom,perst-regs", 0);
> if (!syscon) {
> --
> 2.25.1
>

Reviewed-by: Andrew Halaney <[email protected]>

2022-08-16 12:07:49

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH] PCI: qcom-ep: check return value after calling platform_get_resource_byname()

On Fri, 29 Apr 2022 16:07:40 +0800, Yang Yingliang wrote:
> If platform_get_resource_byname() fails, 'mmio_res' will be set to null pointer,
> it will cause null-ptr-deref when it used in qcom_pcie_perst_deassert(), so we
> need check the return value.
>
>

Applied to pci/endpoint, thanks!

[1/1] PCI: qcom-ep: check return value after calling platform_get_resource_byname()
https://git.kernel.org/lpieralisi/pci/c/a6f7fbae8371

Thanks,
Lorenzo