vfio: Fix group release deadlock
authorAlex Williamson <alex.williamson@redhat.com>
Mon, 19 Jun 2017 15:10:32 +0000 (09:10 -0600)
committerAlex Williamson <alex.williamson@redhat.com>
Wed, 28 Jun 2017 19:49:38 +0000 (13:49 -0600)
commit811642d8d8a82c0cce8dc2debfdaf23c5a144839
tree8b64ef6d040f88ec61d6c12c82ebdb43843c3712
parent7b3a10df1d4bd8a83934897442370221b4cd631b
vfio: Fix group release deadlock

If vfio_iommu_group_notifier() acquires a group reference and that
reference becomes the last reference to the group, then vfio_group_put
introduces a deadlock code path where we're trying to unregister from
the iommu notifier chain from within a callout of that chain.  Use a
work_struct to release this reference asynchronously.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Cc: stable@vger.kernel.org
drivers/vfio/vfio.c