[PATCH] oom: less memdie
authorNick Piggin <npiggin@suse.de>
Thu, 7 Dec 2006 04:31:52 +0000 (20:31 -0800)
committerLinus Torvalds <torvalds@woody.osdl.org>
Thu, 7 Dec 2006 16:39:20 +0000 (08:39 -0800)
Don't cause all threads in all other thread groups to gain TIF_MEMDIE
otherwise we'll get a thundering herd eating our memory reserve.  This may not
be the optimal scheme, but it fits our policy of allowing just one TIF_MEMDIE
in the system at once.

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 a6879f22eb3026c34298a12fbcd9832ea09ecc4c..223d9ccb7d64b6b28f5642ba3ab12629a170419a 100644 (file)
@@ -323,11 +323,12 @@ static int oom_kill_task(struct task_struct *p)
 
        /*
         * kill all processes that share the ->mm (i.e. all threads),
-        * but are in a different thread group.
+        * but are in a different thread group. Don't let them have access
+        * to memory reserves though, otherwise we might deplete all memory.
         */
        do_each_thread(g, q) {
                if (q->mm == mm && q->tgid != p->tgid)
-                       __oom_kill_task(q, 1);
+                       force_sig(SIGKILL, p);
        } while_each_thread(g, q);
 
        return 0;