Message ID | 6884617.gWRuZsFG3E@vostro.rjw.lan (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
On Thu, 2013-11-14 at 00:17 +0100, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> > > If a PCI host bridge cannot be enumerated due to an error in > pci_acpi_scan_root(), its ACPI device object's driver_data field > has to be cleared by acpi_pci_root_add() before freeing the > object pointed to by that field, or some later acpi_pci_find_root() > checks that should fail may succeed and cause quite a bit of > confusion to ensue. > > Fix acpi_pci_root_add() to clear device->driver_data before > returning an error code as appropriate. > > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Toshi Kani <toshi.kani@hp.com> Thanks, -Toshi -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux-pm/drivers/acpi/pci_root.c =================================================================== --- linux-pm.orig/drivers/acpi/pci_root.c +++ linux-pm/drivers/acpi/pci_root.c @@ -525,6 +525,7 @@ static int acpi_pci_root_add(struct acpi dev_err(&device->dev, "Bus %04x:%02x not present in PCI namespace\n", root->segment, (unsigned int)root->secondary.start); + device->driver_data = NULL; result = -ENODEV; goto end; }