From c3108416e75607f338c2e4b90020d5e899195c3e Mon Sep 17 00:00:00 2001 From: Martin Liu Date: Thu, 3 Sep 2020 22:12:14 +0800 Subject: [PATCH] lmkd: avoid division by zero because of file_base_lru It seems we have chance that file_base_lru is zero. Avoid it by adding 1. Bug: 167660459 Test: boot Signed-off-by: Martin Liu Change-Id: If19dbbaafe6cd28a9d5b7f8a002f3cd33daab5e7 --- lmkd.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lmkd.cpp b/lmkd.cpp index a4367c3..22711e9 100644 --- a/lmkd.cpp +++ b/lmkd.cpp @@ -2422,7 +2422,8 @@ static void mp_event_psi(int data, uint32_t events, struct polling_params *poll_ if (since_thrashing_reset_ms > THRASHING_RESET_INTERVAL_MS) { long windows_passed; /* Calculate prev_thrash_growth if we crossed THRASHING_RESET_INTERVAL_MS */ - prev_thrash_growth = (vs.field.workingset_refault - init_ws_refault) * 100 / base_file_lru; + prev_thrash_growth = (vs.field.workingset_refault - init_ws_refault) * 100 + / (base_file_lru + 1); windows_passed = (since_thrashing_reset_ms / THRASHING_RESET_INTERVAL_MS); /* * Decay prev_thrashing unless over-the-limit thrashing was registered in the window we @@ -2440,7 +2441,7 @@ static void mp_event_psi(int data, uint32_t events, struct polling_params *poll_ thrashing_limit = thrashing_limit_pct; } else { /* Calculate what % of the file-backed pagecache refaulted so far */ - thrashing = (vs.field.workingset_refault - init_ws_refault) * 100 / base_file_lru; + thrashing = (vs.field.workingset_refault - init_ws_refault) * 100 / (base_file_lru + 1); } /* Add previous cycle's decayed thrashing amount */ thrashing += prev_thrash_growth;