vfio: Fix group release deadlock
authorAlex Williamson <alex.williamson@redhat.com>
Mon, 19 Jun 2017 15:10:32 +0000 (09:10 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jul 2017 22:08:03 +0000 (15:08 -0700)
commite91a55790ddfbda7f9f72963e561d9c738f14a52
treebd8e958ed90b2a9d407ae7ca77887c82eba82fe7
parentfee760fc6c79998efc48bd06afeec31824dfb2d4
vfio: Fix group release deadlock

commit 811642d8d8a82c0cce8dc2debfdaf23c5a144839 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/vfio/vfio.c