summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Cavitt <jonathan.cavitt@intel.com>2025-09-04 19:30:42 +0000
committerAndi Shyti <andi.shyti@linux.intel.com>2025-09-09 17:58:19 +0200
commitf8d2c26df98b487d61e582c01804340b96c44e44 (patch)
tree19e4fa2ea04f21923f915a2b4ae107f083d6be28
parent82b13dd5d93d9d170c096f042eb470add22c338c (diff)
drm/i915/gt: Fix memory leak in hangcheck selftest
In active_engines, if intel_context_create fails, we need to go backwards through all the created contexts to free/put them. However, the way this is currently performed skips the first created context, as if count == 1, then --count returns 0 and exits the while-loop prematurely without performing the intel_context_put on context 0. Fix this by post-decrementing count in the while-loop, rather than pre-decrementing it. This change makes the prior guard against count underflowing unnecessary, as the while-loop exits when count == 0. Signed-off-by: Jonathan Cavitt <jonathan.cavitt@intel.com> Cc: Krzysztof Karas <krzysztof.karas@intel.com> Cc: Andi Shyti <andi.shyti@linux.intel.com> Cc: Sebastian Brzezinka <sebastian.brzezinka@intel.com> Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com> Link: https://lore.kernel.org/r/20250904193041.12888-2-jonathan.cavitt@intel.com
-rw-r--r--drivers/gpu/drm/i915/gt/selftest_hangcheck.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
index 619c70c54ef9..4f252f704975 100644
--- a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
+++ b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
@@ -904,9 +904,7 @@ static void active_engine(struct kthread_work *work)
arg->result = PTR_ERR(ce[count]);
pr_err("[%s] Create context #%ld failed: %d!\n",
engine->name, count, arg->result);
- if (!count)
- return;
- while (--count)
+ while (count--)
intel_context_put(ce[count]);
return;
}