aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/vfio/vfio.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/vfio/vfio.c b/drivers/vfio/vfio.c
index 23ba12afe01f..86aac7e4a050 100644
--- a/drivers/vfio/vfio.c
+++ b/drivers/vfio/vfio.c
@@ -234,22 +234,21 @@ static struct vfio_group *vfio_create_group(struct iommu_group *iommu_group)
234 234
235 mutex_lock(&vfio.group_lock); 235 mutex_lock(&vfio.group_lock);
236 236
237 minor = vfio_alloc_group_minor(group);
238 if (minor < 0) {
239 vfio_group_unlock_and_free(group);
240 return ERR_PTR(minor);
241 }
242
243 /* Did we race creating this group? */ 237 /* Did we race creating this group? */
244 list_for_each_entry(tmp, &vfio.group_list, vfio_next) { 238 list_for_each_entry(tmp, &vfio.group_list, vfio_next) {
245 if (tmp->iommu_group == iommu_group) { 239 if (tmp->iommu_group == iommu_group) {
246 vfio_group_get(tmp); 240 vfio_group_get(tmp);
247 vfio_free_group_minor(minor);
248 vfio_group_unlock_and_free(group); 241 vfio_group_unlock_and_free(group);
249 return tmp; 242 return tmp;
250 } 243 }
251 } 244 }
252 245
246 minor = vfio_alloc_group_minor(group);
247 if (minor < 0) {
248 vfio_group_unlock_and_free(group);
249 return ERR_PTR(minor);
250 }
251
253 dev = device_create(vfio.class, NULL, 252 dev = device_create(vfio.class, NULL,
254 MKDEV(MAJOR(vfio.group_devt), minor), 253 MKDEV(MAJOR(vfio.group_devt), minor),
255 group, "%d", iommu_group_id(iommu_group)); 254 group, "%d", iommu_group_id(iommu_group));