kernel_samsung_a53x/drivers/pci
Daniel Stodden d9be723023 PCI: switchtec: Fix stdev_release() crash after surprise hot remove
[ Upstream commit df25461119d987b8c81d232cfe4411e91dcabe66 ]

A PCI device hot removal may occur while stdev->cdev is held open. The call
to stdev_release() then happens during close or exit, at a point way past
switchtec_pci_remove(). Otherwise the last ref would vanish with the
trailing put_device(), just before return.

At that later point in time, the devm cleanup has already removed the
stdev->mmio_mrpc mapping. Also, the stdev->pdev reference was not a counted
one. Therefore, in DMA mode, the iowrite32() in stdev_release() will cause
a fatal page fault, and the subsequent dma_free_coherent(), if reached,
would pass a stale &stdev->pdev->dev pointer.

Fix by moving MRPC DMA shutdown into switchtec_pci_remove(), after
stdev_kill(). Counting the stdev->pdev ref is now optional, but may prevent
future accidents.

Reproducible via the script at
https://lore.kernel.org/r/20231113212150.96410-1-dns@arista.com

Link: https://lore.kernel.org/r/20231122042316.91208-2-dns@arista.com
Signed-off-by: Daniel Stodden <dns@arista.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Reviewed-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-18 12:13:19 +01:00
..
controller PCI: mediatek: Clear interrupt status before dispatching handler 2024-11-18 12:12:54 +01:00
endpoint Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hotplug Revert "PCI: acpiphp: Reassign resources on bridge if necessary" 2024-11-18 12:11:50 +01:00
pcie PCI/ASPM: Fix L1 substate handling in aspm_attr_store_common() 2024-11-18 11:43:22 +01:00
switch PCI: switchtec: Fix stdev_release() crash after surprise hot remove 2024-11-18 12:13:19 +01:00
access.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ats.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
bus.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ecam.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
host-bridge.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
iov.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
irq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mmap.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
msi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
of.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
p2pdma.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-acpi.c PCI/sysfs: Protect driver's D3cold preference from user space 2024-11-18 11:43:21 +01:00
pci-bridge-emul.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-bridge-emul.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-driver.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-label.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-mid.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-pf-stub.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-stub.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci-sysfs.c PCI/sysfs: Protect driver's D3cold preference from user space 2024-11-18 11:43:21 +01:00
pci.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pci.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
probe.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
proc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
quirks.c PCI: Only override AMD USB controller if required 2024-11-18 12:13:19 +01:00
remove.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rom.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
search.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setup-bus.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setup-irq.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
setup-res.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slot.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
syscall.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vpd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xen-pcifront.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00