From 9fb4f6351b5b8eb0114f0d7689b9ee35edba487a Mon Sep 17 00:00:00 2001
From: Alexander Warnecke <awarnecke002@hotmail.com>
Date: Thu, 29 Jun 2023 19:52:42 +1000
Subject: [PATCH 405/487] power: supply: rk817-charger: 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 <awarnecke002@hotmail.com>
---
 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 e5f35d083c23..fe0fbb2fac6a 100644
--- a/drivers/power/supply/rk817_charger.c
+++ b/drivers/power/supply/rk817_charger.c
@@ -719,7 +719,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);
-- 
2.48.1

