linux/drivers/vfio/pci
Alex Williamson 9f47803503 vfio/pci: Use pci_try_reset_function() on initial open
Device lock bites again; if a device .remove() callback races a user
calling ioctl(VFIO_GROUP_GET_DEVICE_FD), the unbind request will hold
the device lock, but the user ioctl may have already taken a vfio_device
reference.  In the case of a PCI device, the initial open will attempt
to reset the device, which again attempts to get the device lock,
resulting in deadlock.  Use the trylock PCI reset interface and return
error on the open path if reset fails due to lock contention.

Link: https://lkml.org/lkml/2017/7/25/381
Reported-by: Wen Congyang <wencongyang2@huawei.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2017-07-26 14:33:15 -06:00
..
Kconfig vfio/pci: Intel IGD OpRegion support 2016-02-22 16:10:09 -07:00
Makefile vfio/pci: Intel IGD OpRegion support 2016-02-22 16:10:09 -07:00
vfio_pci_config.c pci-v4.10-changes 2016-12-15 12:46:48 -08:00
vfio_pci_igd.c vfio/pci: Intel IGD host and LCP bridge config space access 2016-02-22 16:10:09 -07:00
vfio_pci_intrs.c vfio/pci: Fix integer overflows, bitmask check 2016-10-26 13:49:29 -06:00
vfio_pci_private.h vfio_pci: use pci_alloc_irq_vectors 2016-09-29 13:36:38 -06:00
vfio_pci_rdwr.c vfio-pci: use 32-bit comparisons for register address for gcc-4.5 2016-12-30 08:13:47 -07:00
vfio_pci.c vfio/pci: Use pci_try_reset_function() on initial open 2017-07-26 14:33:15 -06:00