Skip to content

Commit f8d2c26

Browse files
Jonathan-CavittAndi Shyti
authored andcommitted
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
1 parent 82b13dd commit f8d2c26

1 file changed

Lines changed: 1 addition & 3 deletions

File tree

drivers/gpu/drm/i915/gt/selftest_hangcheck.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -904,9 +904,7 @@ static void active_engine(struct kthread_work *work)
904904
arg->result = PTR_ERR(ce[count]);
905905
pr_err("[%s] Create context #%ld failed: %d!\n",
906906
engine->name, count, arg->result);
907-
if (!count)
908-
return;
909-
while (--count)
907+
while (count--)
910908
intel_context_put(ce[count]);
911909
return;
912910
}

0 commit comments

Comments
 (0)