]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/acpi/pci_root.c
ACPI / PCI: Fix NULL pointer dereference in acpi_get_pci_dev() (rev. 2)
[karo-tx-linux.git] / drivers / acpi / pci_root.c
index 55b5b90c2a44288f786d266a7cc5810b215ba227..97fad297992094396475fed43cbb3182f886257e 100644 (file)
@@ -400,6 +400,17 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
 
                pbus = pdev->subordinate;
                pci_dev_put(pdev);
+
+               /*
+                * This function may be called for a non-PCI device that has a
+                * PCI parent (eg. a disk under a PCI SATA controller).  In that
+                * case pdev->subordinate will be NULL for the parent.
+                */
+               if (!pbus) {
+                       dev_dbg(&pdev->dev, "Not a PCI-to-PCI bridge\n");
+                       pdev = NULL;
+                       break;
+               }
        }
 out:
        list_for_each_entry_safe(node, tmp, &device_list, node)