diff options
author | Nick Piggin <npiggin@suse.de> | 2006-09-26 02:31:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-26 11:48:49 -0400 |
commit | 5081dde33f7a61d28d9b185cc386f12cb837c7a4 (patch) | |
tree | d2e6f39db4005229580f571137a833c1dabfc38b /mm/oom_kill.c | |
parent | af5b912435de32fbede08cee949429823ed49781 (diff) |
[PATCH] oom: kthread infinite loop fix
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>
Diffstat (limited to 'mm/oom_kill.c')
-rw-r--r-- | mm/oom_kill.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index f1aba7e7b760..12cd4735dc29 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
@@ -207,6 +207,9 @@ static struct task_struct *select_bad_process(unsigned long *ppoints) | |||
207 | unsigned long points; | 207 | unsigned long points; |
208 | int releasing; | 208 | int releasing; |
209 | 209 | ||
210 | /* skip kernel threads */ | ||
211 | if (!p->mm) | ||
212 | continue; | ||
210 | /* skip the init task with pid == 1 */ | 213 | /* skip the init task with pid == 1 */ |
211 | if (p->pid == 1) | 214 | if (p->pid == 1) |
212 | continue; | 215 | continue; |