garbage() explicitly pins the context to corrupt its register state, but only releases that pin when request creation fails. On success, its caller waits for the request and drops the context reference without unpinning. The request's own context pin does not account for this extra pin. Release the explicit pin immediately after creating the request, on both success and failure. A successful request already holds the context pin it needs until retirement, as in the other context selftests. Fixes: 24eba7a9981d ("drm/i915/selftests: Check recovery from corrupted LRC") Cc: stable@vger.kernel.org Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex Signed-off-by: Wentao Liang --- drivers/gpu/drm/i915/gt/selftest_lrc.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c b/drivers/gpu/drm/i915/gt/selftest_lrc.c index 23f04f6f8fba..314922e778a8 100644 --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c @@ -1782,18 +1782,13 @@ static struct i915_request *garbage(struct intel_context *ce, LRC_STATE_OFFSET); rq = intel_context_create_request(ce); - if (IS_ERR(rq)) { - err = PTR_ERR(rq); - goto err_unpin; - } + intel_context_unpin(ce); + if (IS_ERR(rq)) + return rq; i915_request_get(rq); i915_request_add(rq); return rq; - -err_unpin: - intel_context_unpin(ce); - return ERR_PTR(err); } static int __lrc_garbage(struct intel_engine_cs *engine, struct rnd_state *prng) -- 2.34.1