Skip to content

Commit 16e5c2f

Browse files
icklerodrigovivi
authored andcommitted
drm/i915/gem: Check for a closed context when looking up an engine
Beware that the context may already be closed as we try to lookup an engine. Closes: https://gitlab.freedesktop.org/drm/intel/issues/1389 Fixes: 130a95e ("drm/i915/gem: Consolidate ctx->engines[] release") Signed-off-by: Chris Wilson <[email protected]> Cc: Tvrtko Ursulin <[email protected]> Cc: Mika Kuoppala <[email protected]> Reviewed-by: Tvrtko Ursulin <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit a22f347) Signed-off-by: Rodrigo Vivi <[email protected]>
1 parent e50c951 commit 16e5c2f

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

drivers/gpu/drm/i915/gem/i915_gem_context.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,16 @@ i915_gem_context_unlock_engines(struct i915_gem_context *ctx)
192192
static inline struct intel_context *
193193
i915_gem_context_get_engine(struct i915_gem_context *ctx, unsigned int idx)
194194
{
195-
struct intel_context *ce = ERR_PTR(-EINVAL);
195+
struct intel_context *ce;
196196

197197
rcu_read_lock(); {
198198
struct i915_gem_engines *e = rcu_dereference(ctx->engines);
199-
if (likely(idx < e->num_engines && e->engines[idx]))
199+
if (unlikely(!e)) /* context was closed! */
200+
ce = ERR_PTR(-ENOENT);
201+
else if (likely(idx < e->num_engines && e->engines[idx]))
200202
ce = intel_context_get(e->engines[idx]);
203+
else
204+
ce = ERR_PTR(-EINVAL);
201205
} rcu_read_unlock();
202206

203207
return ce;

0 commit comments

Comments
 (0)