diff options
author | Colin Cross <ccross@android.com> | 2014-07-11 17:16:56 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2014-07-14 17:41:17 -0700 |
commit | f8857cc24a54393f904fc4918bd5c2b6adf672e2 (patch) | |
tree | 8c48ac920f65bfbc447de19a71c9b5ed0313fc1c /lmkd | |
parent | 16b0946da1745877311562b8cbce08584c6a1b37 (diff) | |
download | system_core-f8857cc24a54393f904fc4918bd5c2b6adf672e2.zip system_core-f8857cc24a54393f904fc4918bd5c2b6adf672e2.tar.gz system_core-f8857cc24a54393f904fc4918bd5c2b6adf672e2.tar.bz2 |
lmkd: kill a process if zoneinfo can't be read
Opening /proc/zoneinfo may return -ENOMEM under memory pressure,
assume something needs to be killed if that happens.
Bug: 16236289
Change-Id: I25aab09f4c3f2b9e176eaaeca94fd6bd790dad4e
Diffstat (limited to 'lmkd')
-rw-r--r-- | lmkd/lmkd.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lmkd/lmkd.c b/lmkd/lmkd.c index 2362cbf..a534a24 100644 --- a/lmkd/lmkd.c +++ b/lmkd/lmkd.c @@ -660,8 +660,10 @@ static void mp_event(uint32_t events __unused) { if (time(NULL) - kill_lasttime < KILL_TIMEOUT) return; - if (zoneinfo_parse(&mi) < 0) - return; + while (zoneinfo_parse(&mi) < 0) { + // Failed to read /proc/zoneinfo, assume ENOMEM and kill something + find_and_kill_process(0, 0, true); + } other_free = mi.nr_free_pages - mi.totalreserve_pages; other_file = mi.nr_file_pages - mi.nr_shmem; |