* Rafael J. Wysocki <rjw@xxxxxxx>: > From: Rafael J. Wysocki <rjw@xxxxxxx> > > acpi_get_pci_dev() may be called for a non-PCI device, in which case > it should return NULL. However, it assumes that every handle it > finds in the ACPI CA name space, between given device handle and the > PCI root bridge handle, corresponds to a PCI-to-PCI bridge with an > existing secondary bus. For this reason, when it finds a struct > pci_dev object corresponding to one of them, it doesn't check if > its 'subordinate' field is a valid pointer. This obviously leads to > a NULL pointer dereference if acpi_get_pci_dev() is called for a > non-PCI device with a PCI parent which is not a bridge. > > To fix this issue make acpi_get_pci_dev() check if pdev->subordinate > is not NULL for every device it finds on the path between the root > bridge and the device it's supposed to get to and return NULL if the > "target" device cannot be found. > > Fixes http://bugzilla.kernel.org/show_bug.cgi?id=14129, which is a > regression from 2.6.30. Acked-by: Alex Chiang <achiang@xxxxxx> > Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> > --- > > Jesse, Len, > > This is a replacement for the original $subject patch (now in the Len's tree > as commit 5988eaded02e3cca2702f46efc255143468255bd). > > The code was correct, but the comment and the changelog were not. Please > use the one below instead. > > Thanks, > Rafael > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html