From 42677ca0700f67a2e9621c68f23e2249d5e2fab6 Mon Sep 17 00:00:00 2001 From: Nick Piggin Date: Wed, 6 Dec 2006 20:31:50 -0800 Subject: [PATCH] --- yaml --- r: 42646 b: refs/heads/master c: c33e0fca3508f0aa387b1c10d0ef158102deb140 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/oom_kill.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 60cacbac28b9..c3d29dbc2c82 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7253f4ef04b1cd138baf2b29a95473743ac0a307 +refs/heads/master: c33e0fca3508f0aa387b1c10d0ef158102deb140 diff --git a/trunk/mm/oom_kill.c b/trunk/mm/oom_kill.c index 2e3ce3a928b9..bc2627deb7f9 100644 --- a/trunk/mm/oom_kill.c +++ b/trunk/mm/oom_kill.c @@ -313,15 +313,24 @@ static int oom_kill_task(struct task_struct *p, const char *message) if (mm == NULL) return 1; + /* + * Don't kill the process if any threads are set to OOM_DISABLE + */ + do_each_thread(g, q) { + if (q->mm == mm && p->oomkilladj == OOM_DISABLE) + return 1; + } while_each_thread(g, q); + __oom_kill_task(p, message); + /* * kill all processes that share the ->mm (i.e. all threads), * but are in a different thread group */ - do_each_thread(g, q) + do_each_thread(g, q) { if (q->mm == mm && q->tgid != p->tgid) __oom_kill_task(q, message); - while_each_thread(g, q); + } while_each_thread(g, q); return 0; }