]> git.baikalelectronics.ru Git - kernel.git/commit
cxl: use pcibios_free_controller_deferred() when removing vPHBs
authorAndrew Donnellan <andrew.donnellan@au1.ibm.com>
Thu, 18 Aug 2016 07:35:14 +0000 (17:35 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 22 Aug 2016 01:09:33 +0000 (11:09 +1000)
commitd1ab0019eda0d9f428e928ee90e4672664a73b0a
treed454aa443853494533788f1b6aad74e1714eb67a
parent5ea60d7870a27aa9e56fe4f1083f59ee95e87c18
cxl: use pcibios_free_controller_deferred() when removing vPHBs

When cxl removes a vPHB, it's possible that the pci_controller may be freed
before all references to the devices on the vPHB have been released. This
in turn causes an invalid memory access when the devices are eventually
released, as pcibios_release_device() attempts to call the phb's
release_device hook.

In cxl_pci_vphb_remove(), remove the existing call to
pcibios_free_controller(). Instead, use
pcibios_free_controller_deferred() to free the pci_controller after all
devices have been released. Export pci_set_host_bridge_release() so we can
do this.

Cc: stable@vger.kernel.org
Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Acked-by: Ian Munsie <imunsie@au1.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
drivers/misc/cxl/vphb.c
drivers/pci/host-bridge.c