OpenCloudOS-Kernel/drivers/vfio
Alex Williamson b68e7fa879 vfio: Fix virqfd release race
vfoi-pci supports a mechanism like KVM's irqfd for unmasking an
interrupt through an eventfd.  There are two ways to shutdown this
interface: 1) close the eventfd, 2) ioctl (such as disabling the
interrupt).  Both of these do the release through a workqueue,
which can result in a segfault if two jobs get queued for the same
virqfd.

Fix this by protecting the pointer to these virqfds by a spinlock.
The vfio pci device will therefore no longer have a reference to it
once the release job is queued under lock.  On the ioctl side, we
still flush the workqueue to ensure that any outstanding releases
are completed.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
2012-09-21 10:48:28 -06:00
..
pci vfio: Fix virqfd release race 2012-09-21 10:48:28 -06:00
Kconfig vfio: Add PCI device driver 2012-07-31 08:16:24 -06:00
Makefile vfio: Type1 IOMMU implementation 2012-07-31 08:16:23 -06:00
vfio.c vfio: grab vfio_device reference *before* exposing the sucker via fd_install() 2012-08-22 10:26:42 -04:00
vfio_iommu_type1.c vfio: Type1 IOMMU implementation 2012-07-31 08:16:23 -06:00