summaryrefslogtreecommitdiff
path: root/drivers/vfio/vfio_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/vfio/vfio_main.c')
-rw-r--r--drivers/vfio/vfio_main.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
index f9d10dbcf3e6..3d8813125358 100644
--- a/drivers/vfio/vfio_main.c
+++ b/drivers/vfio/vfio_main.c
@@ -1036,12 +1036,13 @@ static const struct file_operations vfio_fops = {
/*
* VFIO Group fd, /dev/vfio/$GROUP
*/
-static void __vfio_group_unset_container(struct vfio_group *group)
+static void vfio_group_detach_container(struct vfio_group *group)
{
struct vfio_container *container = group->container;
struct vfio_iommu_driver *driver;
lockdep_assert_held_write(&group->group_rwsem);
+ WARN_ON(group->container_users != 1);
down_write(&container->group_lock);
@@ -1089,7 +1090,7 @@ static int vfio_group_ioctl_unset_container(struct vfio_group *group)
ret = -EBUSY;
goto out_unlock;
}
- __vfio_group_unset_container(group);
+ vfio_group_detach_container(group);
out_unlock:
up_write(&group->group_rwsem);
@@ -1441,10 +1442,8 @@ static int vfio_group_fops_release(struct inode *inode, struct file *filep)
* is only called when there are no open devices.
*/
WARN_ON(group->notifier.head);
- if (group->container) {
- WARN_ON(group->container_users != 1);
- __vfio_group_unset_container(group);
- }
+ if (group->container)
+ vfio_group_detach_container(group);
group->opened_file = NULL;
up_write(&group->group_rwsem);