The lock here should be interruptible, so we can backoff if needed.

Signed-off-by: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 3bcaf9af590a..19f1eced78a3 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -776,7 +776,12 @@ static int __eb_add_lut(struct i915_execbuffer *eb,
                if (err == 0) { /* And nor has this handle */
                        struct drm_i915_gem_object *obj = vma->obj;
 
-                       i915_gem_object_lock(obj, NULL);
+                       err = i915_gem_object_lock_interruptible(obj, NULL);
+                       if (err) {
+                               radix_tree_delete(&ctx->handles_vma, handle);
+                               goto unlock;
+                       }
+
                        if (idr_find(&eb->file->object_idr, handle) == obj) {
                                list_add(&lut->obj_link, &obj->lut_list);
                        } else {
@@ -785,6 +790,7 @@ static int __eb_add_lut(struct i915_execbuffer *eb,
                        }
                        i915_gem_object_unlock(obj);
                }
+unlock:
                mutex_unlock(&ctx->mutex);
        }
        if (unlikely(err))
-- 
2.26.2

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to