select_bad_process() thinks a kernel thread can't have ->mm != NULL, this is not true due to use_mm(). Change the code to check PF_KTHREAD. Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> --- mm/oom_kill.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) --- MM/mm/oom_kill.c~1_FLITER_OUT_KTHREADS 2010-03-31 17:47:14.000000000 +0200 +++ MM/mm/oom_kill.c 2010-04-02 18:51:05.000000000 +0200 @@ -290,8 +290,8 @@ static struct task_struct *select_bad_pr for_each_process(p) { unsigned int points; - /* skip the init task */ - if (is_global_init(p)) + /* skip the init task and kthreads */ + if (is_global_init(p) || (p->flags & PF_KTHREAD)) continue; if (mem && !task_in_mem_cgroup(p, mem)) continue; @@ -331,8 +331,7 @@ static struct task_struct *select_bad_pr } /* - * skip kernel threads and tasks which have already released - * their mm. + * skip the tasks which have already released their mm. */ if (!p->mm) continue; -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>