Skip to content
  • Alex Williamson's avatar
    vfio: Fix virqfd release race · b68e7fa8
    Alex Williamson authored
    
    
    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: default avatarAlex Williamson <alex.williamson@redhat.com>
    b68e7fa8