diff options
author | Jenny Ho <hsiufangho@google.com> | 2023-03-24 12:34:23 +0800 |
---|---|---|
committer | TreeHugger Robot <treehugger-gerrit@google.com> | 2023-03-24 21:42:10 +0000 |
commit | 1cf4358ae03f755700eeda342ffce68c6c9878ab (patch) | |
tree | 675d10844153fc4c6cb5cf579b5b7c64d144fef3 | |
parent | ae3657e0ab9c65b577fd6cdb9e804dcabb0c43eb (diff) | |
download | bms-android-gs-raviole-5.10-android13-qpr3.tar.gz |
max_m5: enhanced model loading processandroid-t-qpr3-beta-3_r0.5android-t-qpr3-beta-3_r0.4android-t-qpr3-beta-3_r0.3android-t-qpr3-beta-3.1_r0.5android-t-qpr3-beta-3.1_r0.4android-t-qpr3-beta-3.1_r0.3android-13.0.0_r0.92android-13.0.0_r0.85android-13.0.0_r0.84android-13.0.0_r0.83android-13.0.0_r0.82android-13.0.0_r0.127android-13.0.0_r0.126android-13.0.0_r0.125android-13.0.0_r0.124android-13.0.0_r0.123android-13.0.0_r0.121android-13.0.0_r0.117android-13.0.0_r0.116android-13.0.0_r0.115android-13.0.0_r0.114android-13.0.0_r0.113android-13.0.0_r0.112android-13.0.0_r0.107android-13.0.0_r0.106android-13.0.0_r0.105android-13.0.0_r0.104android-13.0.0_r0.103android-13.0.0_r0.100android-gs-tangorpro-5.10-android13-qpr3android-gs-raviole-5.10-t-qpr3-beta-3android-gs-raviole-5.10-android13-qpr3android-gs-pantah-5.10-t-qpr3-beta-3android-gs-pantah-5.10-android13-qpr3android-gs-lynx-5.10-android13-qpr3android-gs-felix-5.10-android13-qpr3-candroid-gs-felix-5.10-android13-qpr3android-gs-bluejay-5.10-t-qpr3-beta-3android-gs-bluejay-5.10-android13-qpr3
Add more conditions to check for plausible data.
Prevent loading incorrect values from causing inaccurate calculation results
Bug: 275009537
Change-Id: I02a656a1ace1f582cac9295651e7aec7f37f5df8
Signed-off-by: Jenny Ho <hsiufangho@google.com>
-rw-r--r-- | max_m5.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -591,9 +591,13 @@ static bool memtst(void *buf, char c, size_t count) return same; } -static int max_m5_check_state_data(struct model_state_save *state) +/* TODO: make it adjustable, set 10% tolerance here */ +#define MAX_M5_CAP_MAX_RATIO 110 +static int max_m5_check_state_data(struct model_state_save *state, + struct max_m5_custom_parameters *ini) { bool bad_residual, empty; + int max_cap = ini->designcap * MAX_M5_CAP_MAX_RATIO / 100; empty = memtst(state, 0xff, sizeof(*state)); if (empty) @@ -613,6 +617,12 @@ static int max_m5_check_state_data(struct model_state_save *state) if (bad_residual) return -EINVAL; + if (state->fullcaprep > max_cap) + return -ERANGE; + + if (state->fullcapnom > max_cap) + return -ERANGE; + return 0; } @@ -661,7 +671,7 @@ int max_m5_load_state_data(struct max_m5_data *m5_data) return ret; } - ret = max_m5_check_state_data(&m5_data->model_save); + ret = max_m5_check_state_data(&m5_data->model_save, cp); if (ret < 0) return ret; |