From: KOSAKI Motohiro Date: Tue, 10 Aug 2010 00:19:34 +0000 (-0700) Subject: oom: oom_kill_process() doesn't select kthread child X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=2c5ea53ce46ebb232e0d9a475fdd2b166d2a516b;p=openwrt%2Fstaging%2Fblogic.git oom: oom_kill_process() doesn't select kthread child Presently select_bad_process() has a PF_KTHREAD check, but oom_kill_process doesn't. It mean oom_kill_process() may choose wrong task, especially, when the child are using use_mm(). Signed-off-by: KOSAKI Motohiro Reviewed-by: Minchan Kim Cc: David Rientjes Cc: KAMEZAWA Hiroyuki Cc: Oleg Nesterov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 6e9f16a910e0..b9816ea2eb8f 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -467,6 +467,8 @@ static int oom_kill_process(struct task_struct *p, gfp_t gfp_mask, int order, if (child->mm == p->mm) continue; + if (child->flags & PF_KTHREAD) + continue; if (mem && !task_in_mem_cgroup(child, mem)) continue; if (!has_intersects_mems_allowed(child, nodemask))