1. Oct 13, 2009
    • Rafael J. Wysocki's avatar
      ACPI / PCI: Fix NULL pointer dereference in acpi_get_pci_dev() (rev. 2) · 497fb54f
      Rafael J. Wysocki authored
      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.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=14129
      (worked in 2.6.30, regression in 2.6.31)
      
      Signed-off-by: Rafael J. Wy...
      497fb54f
  2. Oct 05, 2009
  3. Oct 04, 2009
  4. Oct 03, 2009