aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2016-05-26 18:16:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-26 18:35:44 -0400
commit1ebab2db065e99eed9ab2304d3b7ad25c9568612 (patch)
treee235330fb357cb820a85fa6e3fcdb8c9666e3c2c
parent1f3a437fa027c75b26a64e2e71d7c374ff70f866 (diff)
memcg: fix mem_cgroup_out_of_memory() return value.
mem_cgroup_out_of_memory() is returning "true" if it finds a TIF_MEMDIE task after an eligible task was found, "false" if it found a TIF_MEMDIE task before an eligible task is found. This difference confuses memory_max_write() which checks the return value of mem_cgroup_out_of_memory(). Since memory_max_write() wants to continue looping, mem_cgroup_out_of_memory() should return "true" in this case. This patch sets a dummy pointer in order to return "true". Link: http://lkml.kernel.org/r/1463753327-5170-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Vladimir Davydov <vdavydov@virtuozzo.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/memcontrol.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index cf428d7b9a03..f6477a9dbe7a 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1302,6 +1302,8 @@ static bool mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
1302 mem_cgroup_iter_break(memcg, iter); 1302 mem_cgroup_iter_break(memcg, iter);
1303 if (chosen) 1303 if (chosen)
1304 put_task_struct(chosen); 1304 put_task_struct(chosen);
1305 /* Set a dummy value to return "true". */
1306 chosen = (void *) 1;
1305 goto unlock; 1307 goto unlock;
1306 case OOM_SCAN_OK: 1308 case OOM_SCAN_OK:
1307 break; 1309 break;