]> 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)
commitdac7890441ab231855017cd6e0b10ed9d50fbcf2
treed454aa443853494533788f1b6aad74e1714eb67a
parent78b99d69686549b6a36a3d48ed62f09b4f1a12b2
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