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:06:07 +0000 (15:06 -0700)
commitdb42944cc63a2db5de17b6cb572327c7ab8ab637
tree6ed34451eddc679289a8060d381ff9d1eb9e058a
parentfca8859982fb0e591c9baa10f1ba7c405dd5a120
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