[PATCH] oom: kthread infinite loop fix
Nick Piggin [Tue, 26 Sep 2006 06:31:32 +0000 (23:31 -0700)]
Skip kernel threads, rather than having them return 0 from badness.
Theoretically, badness might truncate all results to 0, thus a kernel thread
might be picked first, causing an infinite loop.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

mm/oom_kill.c

index f1aba7e..12cd473 100644 (file)
@@ -207,6 +207,9 @@ static struct task_struct *select_bad_process(unsigned long *ppoints)
                unsigned long points;
                int releasing;
 
+               /* skip kernel threads */
+               if (!p->mm)
+                       continue;
                /* skip the init task with pid == 1 */
                if (p->pid == 1)
                        continue;