PCI: Fix to avoid potential NULL pointer dereference
diff mbox series

Message ID 20190319002630.12485-1-pakki001@umn.edu
State New
Headers show
Series
  • PCI: Fix to avoid potential NULL pointer dereference
Related show

Commit Message

Aditya Pakki March 19, 2019, 12:26 a.m. UTC
In gen_pci_probe, of_match_node can return a NULL pointer in case of
failure. The patch avoids a NULL pointer dereference in such a scenario.

Signed-off-by: Aditya Pakki <pakki001@umn.edu>
---
 drivers/pci/controller/pci-host-generic.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Jisheng Zhang March 19, 2019, 5:36 a.m. UTC | #1
On Mon, 18 Mar 2019 19:26:30 -0500 Aditya Pakki wrote:

> 
> In gen_pci_probe, of_match_node can return a NULL pointer in case of

This could not happen. If the probe is called, it means OF registered a
device with a valid compatible string, so of_match_node cannot be NULL.

> failure. The patch avoids a NULL pointer dereference in such a scenario.
> 
> Signed-off-by: Aditya Pakki <pakki001@umn.edu>
> ---
>  drivers/pci/controller/pci-host-generic.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/controller/pci-host-generic.c b/drivers/pci/controller/pci-host-generic.c
> index dea3ec7592a2..85f473f50e96 100644
> --- a/drivers/pci/controller/pci-host-generic.c
> +++ b/drivers/pci/controller/pci-host-generic.c
> @@ -83,6 +83,8 @@ static int gen_pci_probe(struct platform_device *pdev)
>         struct pci_ecam_ops *ops;
> 
>         of_id = of_match_node(gen_pci_of_match, pdev->dev.of_node);
> +       if (!of_id)
> +               return -ENXIO;
>         ops = (struct pci_ecam_ops *)of_id->data;
> 
>         return pci_host_common_probe(pdev, ops);
> --
> 2.17.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.infradead.org_mailman_listinfo_linux-2Darm-2Dkernel&d=DwICAg&c=7dfBJ8cXbWjhc0BhImu8wQ&r=wlaKTGoVCDxOzHc2QUzpzGEf9oY3eidXlAe3OF1omvo&m=Aaw3ijENR3L1GJbf1JjDlPa-S8-6UwqqXN40ECdoisk&s=ByG7jEMATcZVHKP-JW7j4efNcV-iAfJDFTEzC8Ba7oc&e=

Patch
diff mbox series

diff --git a/drivers/pci/controller/pci-host-generic.c b/drivers/pci/controller/pci-host-generic.c
index dea3ec7592a2..85f473f50e96 100644
--- a/drivers/pci/controller/pci-host-generic.c
+++ b/drivers/pci/controller/pci-host-generic.c
@@ -83,6 +83,8 @@  static int gen_pci_probe(struct platform_device *pdev)
 	struct pci_ecam_ops *ops;
 
 	of_id = of_match_node(gen_pci_of_match, pdev->dev.of_node);
+	if (!of_id)
+		return -ENXIO;
 	ops = (struct pci_ecam_ops *)of_id->data;
 
 	return pci_host_common_probe(pdev, ops);