diff options
author | David Rientjes <rientjes@google.com> | 2010-05-26 17:42:41 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-27 12:12:43 -0400 |
commit | df64f81bb1e01cbef967a96642dacf208acb7e72 (patch) | |
tree | accb54ac130b2ac52b3d8644cb6585cf9730975c /mm | |
parent | dc10e281f5fc42e288ab979294d1d5dc9743ae1b (diff) |
memcg: make oom killer a no-op when no killable task can be found
It's pointless to try to kill current if select_bad_process() did not find
an eligible task to kill in mem_cgroup_out_of_memory() since it's
guaranteed that current is a member of the memcg that is oom and it is, by
definition, unkillable.
Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/oom_kill.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index b68e802a7a7d..709aedfaa014 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
@@ -479,12 +479,9 @@ void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask) | |||
479 | read_lock(&tasklist_lock); | 479 | read_lock(&tasklist_lock); |
480 | retry: | 480 | retry: |
481 | p = select_bad_process(&points, mem); | 481 | p = select_bad_process(&points, mem); |
482 | if (PTR_ERR(p) == -1UL) | 482 | if (!p || PTR_ERR(p) == -1UL) |
483 | goto out; | 483 | goto out; |
484 | 484 | ||
485 | if (!p) | ||
486 | p = current; | ||
487 | |||
488 | if (oom_kill_process(p, gfp_mask, 0, points, mem, | 485 | if (oom_kill_process(p, gfp_mask, 0, points, mem, |
489 | "Memory cgroup out of memory")) | 486 | "Memory cgroup out of memory")) |
490 | goto retry; | 487 | goto retry; |