diff options
author | 2010-08-10 18:03:00 -0700 | |
---|---|---|
committer | 2010-08-11 08:59:19 -0700 | |
commit | 158e0a2d1b3cffed8b46cbc56393a1394672ef79 (patch) | |
tree | a044d53137609fdfc8c1afdde366b3e205c96eda /include/linux/oom.h | |
parent | memcg: remove mem from arg of charge_common (diff) | |
download | linux-158e0a2d1b3cffed8b46cbc56393a1394672ef79.tar.gz linux-158e0a2d1b3cffed8b46cbc56393a1394672ef79.tar.bz2 linux-158e0a2d1b3cffed8b46cbc56393a1394672ef79.zip |
memcg: use find_lock_task_mm() in memory cgroups oom
When the OOM killer scans task, it check a task is under memcg or
not when it's called via memcg's context.
But, as Oleg pointed out, a thread group leader may have NULL ->mm
and task_in_mem_cgroup() may do wrong decision. We have to use
find_lock_task_mm() in memcg as generic OOM-Killer does.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Balbir Singh <balbir@linux.vnet.ibm.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/oom.h')
-rw-r--r-- | include/linux/oom.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/oom.h b/include/linux/oom.h index f209b683e118..5e3aa8311c5e 100644 --- a/include/linux/oom.h +++ b/include/linux/oom.h @@ -66,6 +66,8 @@ static inline void oom_killer_enable(void) extern unsigned long badness(struct task_struct *p, struct mem_cgroup *mem, const nodemask_t *nodemask, unsigned long uptime); +extern struct task_struct *find_lock_task_mm(struct task_struct *p); + /* sysctls */ extern int sysctl_oom_dump_tasks; extern int sysctl_oom_kill_allocating_task; |