drm/i915/selftests: Release ctx->engine_mutex after iteration
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 22 Oct 2019 22:33:16 +0000 (23:33 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 23 Oct 2019 09:07:25 +0000 (10:07 +0100)
A lock once taken must be released again.

Fixes: c31c9e82ee8a ("drm/i915/selftests: Teach switch_to_context() to use the context")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191022223316.12662-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/selftests/i915_gem.c

index 84e7ca778b7b16feff2bb1da3cefc1714f35b0d1..6d22567ad620aec323515a5b92eef8eec7ece8e0 100644 (file)
@@ -19,18 +19,22 @@ static int switch_to_context(struct i915_gem_context *ctx)
 {
        struct i915_gem_engines_iter it;
        struct intel_context *ce;
+       int err = 0;
 
        for_each_gem_engine(ce, i915_gem_context_lock_engines(ctx), it) {
                struct i915_request *rq;
 
                rq = intel_context_create_request(ce);
-               if (IS_ERR(rq))
-                       return PTR_ERR(rq);
+               if (IS_ERR(rq)) {
+                       err = PTR_ERR(rq);
+                       break;
+               }
 
                i915_request_add(rq);
        }
+       i915_gem_context_unlock_engines(ctx);
 
-       return 0;
+       return err;
 }
 
 static void trash_stolen(struct drm_i915_private *i915)