drm/qxl: Don't take dev->struct_mutex in bo_force_delete
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 9 Jul 2015 21:32:46 +0000 (23:32 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 11 Aug 2015 10:04:16 +0000 (12:04 +0200)
It really doesn't protect anything which doesn't have other locks
already. It also doesn't seem to be wired up into the driver unload
code fwiw, but that's a different issue.

Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
drivers/gpu/drm/qxl/qxl_object.c

index 6d6f33de48f48a93da1a0eadf681c5ac46874b4a..b28370e014c6c0b1547c5d88378d4d161e80a935 100644 (file)
@@ -272,7 +272,6 @@ void qxl_bo_force_delete(struct qxl_device *qdev)
                return;
        dev_err(qdev->dev, "Userspace still has active objects !\n");
        list_for_each_entry_safe(bo, n, &qdev->gem.objects, list) {
-               mutex_lock(&qdev->ddev->struct_mutex);
                dev_err(qdev->dev, "%p %p %lu %lu force free\n",
                        &bo->gem_base, bo, (unsigned long)bo->gem_base.size,
                        *((unsigned long *)&bo->gem_base.refcount));
@@ -280,8 +279,7 @@ void qxl_bo_force_delete(struct qxl_device *qdev)
                list_del_init(&bo->list);
                mutex_unlock(&qdev->gem.mutex);
                /* this should unref the ttm bo */
-               drm_gem_object_unreference(&bo->gem_base);
-               mutex_unlock(&qdev->ddev->struct_mutex);
+               drm_gem_object_unreference_unlocked(&bo->gem_base);
        }
 }