From c9397c70edcae6c18d082fb0df7432f1eebced2c Mon Sep 17 00:00:00 2001 From: Al Viro Date: Fri, 17 Aug 2012 21:27:32 -0400 Subject: [PATCH] --- yaml --- r: 322092 b: refs/heads/master c: 6d2cd3ce815b302e885b44ca1bdbe3c7db321c7a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/vfio/vfio.c | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 23a5672451d1..9acba19346b2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8ad5db8a8ddbe3bd33078863a027011e28f1f4ee +refs/heads/master: 6d2cd3ce815b302e885b44ca1bdbe3c7db321c7a diff --git a/trunk/drivers/vfio/vfio.c b/trunk/drivers/vfio/vfio.c index 0b025d58de81..92b85676e6be 100644 --- a/trunk/drivers/vfio/vfio.c +++ b/trunk/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 */