diff options
| author | 2025-01-02 17:07:47 -0800 | |
|---|---|---|
| committer | 2025-01-02 18:39:27 -0800 | |
| commit | b4cfeb60ddaff26cd214d0f8331737b510674f57 (patch) | |
| tree | be4e2e195fcbef2d90fff75f66fc8f664de00619 | |
| parent | 0fd6b40df2e42acd9f90939eb934b8d016b8014d (diff) | |
Prevent zero-division when number of TX or RX packets is 0.
Bug: 386606184
Flag: EXEMPT bugfix
Test: atest PowerStatsTests
Change-Id: I6ca7b9308d85f6256aeb5f554de5be32570cdb28
| -rw-r--r-- | services/core/java/com/android/server/power/stats/BatteryStatsImpl.java | 24 |
1 files changed, 14 insertions, 10 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 24d857b0fc1f..caaf5a2b16d0 100644 --- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java @@ -12746,20 +12746,24 @@ public class BatteryStatsImpl extends BatteryStats { // Distribute the remaining Tx power appropriately between all apps that transmitted // packets. - for (int i = 0; i < txPackets.size(); i++) { - final int uid = txPackets.keyAt(i); - final long myTxTimeMs = (txPackets.valueAt(i) * leftOverTxTimeMs) - / totalTxPackets; - txTimesMs.incrementValue(uid, myTxTimeMs); + if (totalTxPackets != 0 && leftOverTxTimeMs != 0) { + for (int i = 0; i < txPackets.size(); i++) { + final int uid = txPackets.keyAt(i); + final long myTxTimeMs = (txPackets.valueAt(i) * leftOverTxTimeMs) + / totalTxPackets; + txTimesMs.incrementValue(uid, myTxTimeMs); + } } // Distribute the remaining Rx power appropriately between all apps that received // packets. - for (int i = 0; i < rxPackets.size(); i++) { - final int uid = rxPackets.keyAt(i); - final long myRxTimeMs = (rxPackets.valueAt(i) * leftOverRxTimeMs) - / totalRxPackets; - rxTimesMs.incrementValue(uid, myRxTimeMs); + if (totalRxPackets != 0 && leftOverRxTimeMs != 0) { + for (int i = 0; i < rxPackets.size(); i++) { + final int uid = rxPackets.keyAt(i); + final long myRxTimeMs = (rxPackets.valueAt(i) * leftOverRxTimeMs) + / totalRxPackets; + rxTimesMs.incrementValue(uid, myRxTimeMs); + } } for (int i = 0; i < txTimesMs.size(); i++) { |