From: KOSAKI Motohiro If zone->recent_scanned parameter become inbalanceing anon and file, OOM killer can happened although swappable page exist. So, if priority==0, We should try to reclaim all page for prevent OOM. Signed-off-by: KOSAKI Motohiro Acked-by: Rik van Riel Cc: Lee Schermerhorn Signed-off-by: Andrew Morton --- mm/vmscan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff -puN mm/vmscan.c~vmscan-split-lru-lists-into-anon-file-sets-prevent-incorrect-oom-under-split_lru mm/vmscan.c --- a/mm/vmscan.c~vmscan-split-lru-lists-into-anon-file-sets-prevent-incorrect-oom-under-split_lru +++ a/mm/vmscan.c @@ -1292,8 +1292,10 @@ static unsigned long shrink_zone(int pri * kernel will slowly sift through each list. */ scan = zone_page_state(zone, NR_LRU_BASE + l); - scan >>= priority; - scan = (scan * percent[file]) / 100; + if (priority) { + scan >>= priority; + scan = (scan * percent[file]) / 100; + } zone->lru[l].nr_scan += scan + 1; nr[l] = zone->lru[l].nr_scan; if (nr[l] >= sc->swap_cluster_max) _