PCI: Don't oops on virtual buses in acpi_pci_get_bridge_handle()
authorYinghai Lu <yinghai@kernel.org>
Thu, 30 Oct 2014 16:17:25 +0000 (10:17 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Wed, 5 Nov 2014 20:06:16 +0000 (13:06 -0700)
commit32f638fc11db0526c706454d9ab4339d55ac89f3
treeba1c8cb242be66e6850397e3f4a47c75dca5b7fd
parentd8e7d53a2fc14e0830ab728cb84ee19933d3ac8d
PCI: Don't oops on virtual buses in acpi_pci_get_bridge_handle()

acpi_pci_get_bridge_handle() returns the ACPI handle for the bridge device
(either a host bridge or a PCI-to-PCI bridge) leading to a PCI bus.  But
SR-IOV virtual functions can be on a virtual bus with no bridge leading to
it.  Return a NULL acpi_handle in this case instead of trying to
dereference the NULL pointer to the bridge.

This fixes a NULL pointer dereference oops in pci_get_hp_params() when
adding SR-IOV VF devices on virtual buses.

[bhelgaas: changelog, add comment in code]
Fixes: 6cd33649fa83 ("PCI: Add pci_configure_device() during enumeration")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=87591
Reported-by: Chao Zhou <chao.zhou@intel.com>
Reported-by: Joerg Roedel <joro@8bytes.org>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
include/linux/pci-acpi.h