Commit 317be9c6 authored by Krzysztof Karas's avatar Krzysztof Karas Committed by Andi Shyti
Browse files

drm/i915/gt: Protect against overflow in active_engine()



It is unlikely, but possible for the first call to
intel_context_create() to fail with -ENOMEM, which would result
in entering the following code block and decrementing "count",
when it is set to 0 (initial condition in the for loop).

Protect from overflowing the variable by checking for 0 value
of "count" before entering the loop.

Signed-off-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: default avatarSebastian Brzezinka <sebastian.brzezinka@intel.com>
Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Link: https://lore.kernel.org/r/pogr74jktdqehrfap4tjky23ees4x7erh5dwgg5jb2n522cfkw@kpnxe4qzx4pj
parent f768ebbb
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -904,6 +904,8 @@ 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)
				intel_context_put(ce[count]);
			return;