PCI/MSI: Fix MSI IRQ domains for VFs on virtual buses
authorAlex Williamson <alex.williamson@redhat.com>
Fri, 18 Sep 2015 21:08:54 +0000 (15:08 -0600)
committerBjorn Helgaas <helgaas@kernel.org>
Thu, 24 Sep 2015 22:06:32 +0000 (17:06 -0500)
commit38ea72bdb65df2f40ec77b2c9d1413e7f5e34465
tree9356d810f4575ff20e2615043de2005439202845
parentb838b39e930aa1cfd099ea82ac40ed6d6413af26
PCI/MSI: Fix MSI IRQ domains for VFs on virtual buses

SR-IOV creates a virtual bus where bus->self is NULL.  When we add VFs and
scan for an MSI domain, pci_set_bus_msi_domain() dereferences bus->self,
which causes a kernel NULL pointer dereference oops.

Scan up to the parent bus until we find a real bridge where we can get the
MSI domain.

[bhelgaas: changelog]
Fixes: 44aa0c657e3e ("PCI/MSI: Add hooks to populate the msi_domain field")
Tested-by: Joerg Roedel <joro@8bytes.org>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
drivers/pci/probe.c