Message ID | 20241209-fix-charge-current-limit-v1-1-760d9b8f2af3@liebherr.com (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | power: supply: gpio-charger: Fix set charge current limits | expand |
On Mon, 09 Dec 2024 11:46:15 +0100, Dimitri Fedrau wrote: > 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. > > Applied, thanks! [1/1] power: supply: gpio-charger: Fix set charge current limits commit: afc6e39e824ad0e44b2af50a97885caec8d213d1 Best regards,
diff --git a/drivers/power/supply/gpio-charger.c b/drivers/power/supply/gpio-charger.c index 68212b39785beabfe5536a18fa15bc249f7b1eea..6139f736ecbe4ffc74848797a72095f4cadf3b62 100644 --- a/drivers/power/supply/gpio-charger.c +++ b/drivers/power/supply/gpio-charger.c @@ -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++) {