diff options
author | Alex Williamson <alex.williamson@redhat.com> | 2012-09-21 10:48:28 -0600 |
---|---|---|
committer | Alex Williamson <alex.williamson@redhat.com> | 2012-09-21 10:48:28 -0600 |
commit | b68e7fa879cd3b1126a7c455d9da1b70299efc0d (patch) | |
tree | 96126d0337b76ab5148fcd844e971e4afe9a02b1 /lib/rwsem-spinlock.c | |
parent | b37b593e20a073dce5c7cbaf230f166db6425450 (diff) |
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>
Diffstat (limited to 'lib/rwsem-spinlock.c')
0 files changed, 0 insertions, 0 deletions