summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-08-18 03:27:32 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2012-08-22 16:25:19 +0200
commit6d2cd3ce815b302e885b44ca1bdbe3c7db321c7a (patch)
tree297e0e82ef5c8b7b711863dd6016f91c818cd207
parentintroduce kref_put_mutex() (diff)
downloadlinux-6d2cd3ce815b302e885b44ca1bdbe3c7db321c7a.tar.xz
linux-6d2cd3ce815b302e885b44ca1bdbe3c7db321c7a.zip
vfio: get rid of open-coding kref_put_mutex
Acked-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r--drivers/vfio/vfio.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index 0b025d58de81..92b85676e6be 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -264,6 +264,7 @@ static struct vfio_group *vfio_create_group(struct iommu_group *iommu_group)
return group;
}
+/* called with vfio.group_lock held */
static void vfio_group_release(struct kref *kref)
{
struct vfio_group *group = container_of(kref, struct vfio_group, kref);
@@ -287,13 +288,7 @@ static void vfio_group_release(struct kref *kref)
static void vfio_group_put(struct vfio_group *group)
{
- mutex_lock(&vfio.group_lock);
- /*
- * Release needs to unlock to unregister the notifier, so only
- * unlock if not released.
- */
- if (!kref_put(&group->kref, vfio_group_release))
- mutex_unlock(&vfio.group_lock);
+ kref_put_mutex(&group->kref, vfio_group_release, &vfio.group_lock);
}
/* Assume group_lock or group reference is held */