From 347553f47adeb031f593bb6982faf92cb2faf030 Mon Sep 17 00:00:00 2001 From: Michael Wachenschwanz Date: Thu, 2 Feb 2023 14:16:19 -0800 Subject: [PATCH] Fix divide-by-zero in noteModemControllerActivity Fixes: 267058279 Test: manual (while no radio activity "adb shell dumpsys battery unplug; adb shell dumpsys batterystats; adb shell dumpsys batterystats;") Change-Id: I8803aad1f38c2baa50c255d3d315d2c5880c9e33 --- .../server/power/stats/BatteryStatsImpl.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java index 2fb5ceccf6a37..aa2b8282f3093 100644 --- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java @@ -12076,11 +12076,16 @@ public class BatteryStatsImpl extends BatteryStats { final SparseDoubleArray uidEstimatedConsumptionMah; final long dataConsumedChargeUC; if (consumedChargeUC > 0 && isMobileRadioEnergyConsumerSupportedLocked()) { - // Crudely attribute power consumption. Added (totalRadioDurationMs / 2) to the - // numerator for long rounding. - final long phoneConsumedChargeUC = - (consumedChargeUC * phoneOnDurationMs + totalRadioDurationMs / 2) - / totalRadioDurationMs; + final long phoneConsumedChargeUC; + if (totalRadioDurationMs == 0) { + phoneConsumedChargeUC = 0; + } else { + // Crudely attribute power consumption. Added (totalRadioDurationMs / 2) to the + // numerator for long rounding. + phoneConsumedChargeUC = + (consumedChargeUC * phoneOnDurationMs + totalRadioDurationMs / 2) + / totalRadioDurationMs; + } dataConsumedChargeUC = consumedChargeUC - phoneConsumedChargeUC; mGlobalEnergyConsumerStats.updateStandardBucket(