vfio: Make the group FD disassociate from the iommu_group
authorJason Gunthorpe <jgg@nvidia.com>
Fri, 7 Oct 2022 14:04:41 +0000 (11:04 -0300)
committerAlex Williamson <alex.williamson@redhat.com>
Fri, 7 Oct 2022 14:10:52 +0000 (08:10 -0600)
commit3dd59a7dcb97e6e40d6385a1a3faa9392b6d184a
tree1e03b6764480252a87cf4264fe3b2541d82684e9
parent819da99a7360f7e197038d12f0eba626bde11856
vfio: Make the group FD disassociate from the iommu_group

Allow the vfio_group struct to exist with a NULL iommu_group pointer. When
the pointer is NULL the vfio_group users promise not to touch the
iommu_group. This allows a driver to be hot unplugged while userspace is
keeping the group FD open.

Remove all the code waiting for the group FD to close.

This fixes a userspace regression where we learned that virtnodedevd
leaves a group FD open even though the /dev/ node for it has been deleted
and all the drivers for it unplugged.

Fixes: ca5f21b25749 ("vfio: Follow a strict lifetime for struct iommu_group")
Reported-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/3-v2-15417f29324e+1c-vfio_group_disassociate_jgg@nvidia.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/vfio.h
drivers/vfio/vfio_main.c