Commit 0c8cb2c9 authored by Dimitri Fedrau's avatar Dimitri Fedrau Committed by Wenyu Huang
Browse files

power: supply: gpio-charger: Fix set charge current limits

stable inclusion
from stable-v5.10.233
commit b29c7783ac1fe36d639c089cf471ac7a46df05f0
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBI63F
CVE: CVE-2024-57792

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=b29c7783ac1fe36d639c089cf471ac7a46df05f0



--------------------------------

commit afc6e39e824ad0e44b2af50a97885caec8d213d1 upstream.

Fix set charge current limits for devices which allow to set the lowest
charge current limit to be greater zero. If requested charge current limit
is below lowest limit, the index equals current_limit_map_size which leads
to accessing memory beyond allocated memory.

Fixes: be2919d8 ("power: supply: gpio-charger: add charge-current-limit feature")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDimitri Fedrau <dimitri.fedrau@liebherr.com>
Link: https://lore.kernel.org/r/20241209-fix-charge-current-limit-v1-1-760d9b8f2af3@liebherr.com


Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarWenyu Huang <huangwenyu5@huawei.com>
parent df1d0f90
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -67,6 +67,14 @@ static int set_charge_current_limit(struct gpio_charger *gpio_charger, int val)
		if (gpio_charger->current_limit_map[i].limit_ua <= val)
			break;
	}

	/*
	 * If a valid charge current limit isn't found, default to smallest
	 * current limitation for safety reasons.
	 */
	if (i >= gpio_charger->current_limit_map_size)
		i = gpio_charger->current_limit_map_size - 1;

	mapping = gpio_charger->current_limit_map[i];

	for (i = 0; i < ndescs; i++) {