From 9072f9d428c75bd292ea3122c414c404da5e47b7 Mon Sep 17 00:00:00 2001 From: Alexander Warnecke Date: Thu, 29 Jun 2023 19:52:42 +1000 Subject: [PATCH] supply: rk817: Fix battery capacity sanity check calculation If the nvram variable is corrupted in a way that multiplying it by 1000 causes an integer overflow and wraps around to a number within or below the sanity check bounds, the check fails and capacity is reported incorrectly. Change the sanity check calculation to not multiply the variable read from the rk817 nvram, preventing the overflow and resulting in all corrupt capacity values being detected. Signed-off-by: Alexander Warnecke --- drivers/power/supply/rk817_charger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/power/supply/rk817_charger.c b/drivers/power/supply/rk817_charger.c index f64daf5a41d9..f0afc9daa855 100644 --- a/drivers/power/supply/rk817_charger.c +++ b/drivers/power/supply/rk817_charger.c @@ -715,7 +715,7 @@ static int rk817_read_battery_nvram_values(struct rk817_charger *charger) * correct it. */ if ((charger->fcc_mah < 500) || - ((charger->fcc_mah * 1000) > charger->bat_charge_full_design_uah)) { + (charger->fcc_mah > (charger->bat_charge_full_design_uah / 1000))) { dev_info(charger->dev, "Invalid NVRAM max charge, setting to %u uAH\n", charger->bat_charge_full_design_uah);