From 9bb7cb8af10ab92373e4638172999478b1e76bfb Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 2 Nov 2022 20:02:29 -0700 Subject: [PATCH] Fix division by zero in maybeAdjustDesiredStockLevelLocked(). If getBatteryScreenOffDischargeMah() returns zero that will lead to a division by zero when computing estimatedLifeHours that will bring down the entire system server. Guard against this by returning from the function early if it returns zero. Change-Id: I4905d7184e5185a07e4185fa0e263559d85cff49 --- .../java/com/android/server/tare/InternalResourceService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java b/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java index dd0a19433683e..be8bb704ec70b 100644 --- a/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java +++ b/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java @@ -701,6 +701,10 @@ public class InternalResourceService extends SystemService { return; } final long totalDischargeMah = mAnalyst.getBatteryScreenOffDischargeMah(); + if (totalDischargeMah == 0) { + Slog.i(TAG, "Total discharge was 0"); + return; + } final long batteryCapacityMah = mBatteryManagerInternal.getBatteryFullCharge() / 1000; final long estimatedLifeHours = batteryCapacityMah * totalScreenOffDurationMs / totalDischargeMah / HOUR_IN_MILLIS;