The patch titled
During VM oom condition, kill all threads in process group
has been removed from the -mm tree. Its filename was
during-vm-oom-condition-kill-all-threads-in-process-group.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
Subject: During VM oom condition, kill all threads in process group
From: Will Schmidt <[EMAIL PROTECTED]>
We have had complaints where a threaded application is left in a bad state
after one of it's threads is killed when we hit a VM: out_of_memory
condition.
Killing just one of the process threads can leave the application in a bad
state, whereas killing the entire process group would allow for the
application to restart, or be otherwise handled, and makes it very obvious
that something has gone wrong.
This change allows the entire process group to be taken down, rather
than just the one thread.
Signed-off-by: Will Schmidt <[EMAIL PROTECTED]>
Cc: Richard Henderson <[EMAIL PROTECTED]>
Cc: Ivan Kokshaysky <[EMAIL PROTECTED]>
Cc: Russell King <[EMAIL PROTECTED]>
Cc: Ian Molton <[EMAIL PROTECTED]>
Cc: Haavard Skinnemoen <[EMAIL PROTECTED]>
Cc: Mikael Starvik <[EMAIL PROTECTED]>
Cc: David Howells <[EMAIL PROTECTED]>
Cc: Andi Kleen <[EMAIL PROTECTED]>
Cc: "Luck, Tony" <[EMAIL PROTECTED]>
Cc: Hirokazu Takata <[EMAIL PROTECTED]>
Cc: Geert Uytterhoeven <[EMAIL PROTECTED]>
Cc: Roman Zippel <[EMAIL PROTECTED]>
Cc: Ralf Baechle <[EMAIL PROTECTED]>
Cc: Kyle McMartin <[EMAIL PROTECTED]>
Cc: Matthew Wilcox <[EMAIL PROTECTED]>
Cc: Paul Mackerras <[EMAIL PROTECTED]>
Cc: Benjamin Herrenschmidt <[EMAIL PROTECTED]>
Cc: Heiko Carstens <[EMAIL PROTECTED]>
Cc: Martin Schwidefsky <[EMAIL PROTECTED]>
Cc: Paul Mundt <[EMAIL PROTECTED]>
Cc: Kazumoto Kojima <[EMAIL PROTECTED]>
Cc: Richard Curnow <[EMAIL PROTECTED]>
Cc: William Lee Irwin III <[EMAIL PROTECTED]>
Cc: "David S. Miller" <[EMAIL PROTECTED]>
Cc: Chris Zankel <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
arch/alpha/mm/fault.c | 2 +-
arch/arm/mm/fault.c | 2 +-
arch/avr32/mm/fault.c | 2 +-
arch/cris/mm/fault.c | 2 +-
arch/frv/mm/fault.c | 2 +-
arch/ia64/mm/fault.c | 2 +-
arch/m32r/mm/fault.c | 2 +-
arch/m68k/mm/fault.c | 2 +-
arch/mips/mm/fault.c | 2 +-
arch/parisc/mm/fault.c | 2 +-
arch/ppc/mm/fault.c | 2 +-
arch/s390/mm/fault.c | 2 +-
arch/sh/mm/fault.c | 2 +-
arch/sh64/mm/fault.c | 2 +-
arch/sparc/mm/fault.c | 2 +-
arch/sparc64/mm/fault.c | 2 +-
arch/x86/mm/fault_32.c | 2 +-
arch/xtensa/mm/fault.c | 2 +-
18 files changed, 18 insertions(+), 18 deletions(-)
diff -puN
arch/alpha/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/alpha/mm/fault.c
---
a/arch/alpha/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/alpha/mm/fault.c
@@ -197,7 +197,7 @@ do_page_fault(unsigned long address, uns
current->comm, current->pid);
if (!user_mode(regs))
goto no_context;
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
do_sigbus:
/* Send a sigbus, regardless of whether we were in kernel
diff -puN
arch/arm/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/arm/mm/fault.c
---
a/arch/arm/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/arm/mm/fault.c
@@ -266,7 +266,7 @@ do_page_fault(unsigned long addr, unsign
* the page fault gracefully.
*/
printk("VM: killing process %s\n", tsk->comm);
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
return 0;
}
if (fault & VM_FAULT_SIGBUS) {
diff -puN
arch/avr32/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/avr32/mm/fault.c
---
a/arch/avr32/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/avr32/mm/fault.c
@@ -216,7 +216,7 @@ out_of_memory:
}
printk("VM: Killing process %s\n", tsk->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/cris/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/cris/mm/fault.c
---
a/arch/cris/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/cris/mm/fault.c
@@ -360,7 +360,7 @@ do_page_fault(unsigned long address, str
up_read(&mm->mmap_sem);
printk("VM: killing process %s\n", tsk->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/frv/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/frv/mm/fault.c
---
a/arch/frv/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/frv/mm/fault.c
@@ -259,7 +259,7 @@ asmlinkage void do_page_fault(int datamm
up_read(&mm->mmap_sem);
printk("VM: killing process %s\n", current->comm);
if (user_mode(__frame))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/ia64/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/ia64/mm/fault.c
---
a/arch/ia64/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/ia64/mm/fault.c
@@ -281,6 +281,6 @@ ia64_do_page_fault (unsigned long addres
}
printk(KERN_CRIT "VM: killing process %s\n", current->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
}
diff -puN
arch/m32r/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/m32r/mm/fault.c
---
a/arch/m32r/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/m32r/mm/fault.c
@@ -278,7 +278,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", tsk->comm);
if (error_code & ACE_USERMODE)
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/m68k/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/m68k/mm/fault.c
---
a/arch/m68k/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/m68k/mm/fault.c
@@ -188,7 +188,7 @@ out_of_memory:
printk("VM: killing process %s\n", current->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
no_context:
current->thread.signo = SIGBUS;
diff -puN
arch/mips/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/mips/mm/fault.c
---
a/arch/mips/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/mips/mm/fault.c
@@ -180,7 +180,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", tsk->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/parisc/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/parisc/mm/fault.c
---
a/arch/parisc/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/parisc/mm/fault.c
@@ -263,6 +263,6 @@ no_context:
up_read(&mm->mmap_sem);
printk(KERN_CRIT "VM: killing process %s\n", current->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
}
diff -puN
arch/ppc/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/ppc/mm/fault.c
---
a/arch/ppc/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/ppc/mm/fault.c
@@ -297,7 +297,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", current->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
return SIGKILL;
do_sigbus:
diff -puN
arch/s390/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/s390/mm/fault.c
---
a/arch/s390/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/s390/mm/fault.c
@@ -218,7 +218,7 @@ static int do_out_of_memory(struct pt_re
}
printk("VM: killing process %s\n", tsk->comm);
if (regs->psw.mask & PSW_MASK_PSTATE)
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
do_no_context(regs, error_code, address);
return 0;
}
diff -puN
arch/sh/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/sh/mm/fault.c
---
a/arch/sh/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/sh/mm/fault.c
@@ -214,7 +214,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", tsk->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/sh64/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/sh64/mm/fault.c
---
a/arch/sh64/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/sh64/mm/fault.c
@@ -334,7 +334,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", tsk->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/sparc/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/sparc/mm/fault.c
---
a/arch/sparc/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/sparc/mm/fault.c
@@ -369,7 +369,7 @@ out_of_memory:
up_read(&mm->mmap_sem);
printk("VM: killing process %s\n", tsk->comm);
if (from_user)
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/sparc64/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/sparc64/mm/fault.c
---
a/arch/sparc64/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/sparc64/mm/fault.c
@@ -463,7 +463,7 @@ out_of_memory:
up_read(&mm->mmap_sem);
printk("VM: killing process %s\n", current->comm);
if (!(regs->tstate & TSTATE_PRIV))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto handle_kernel_fault;
intr_or_no_mm:
diff -puN
arch/x86/mm/fault_32.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/x86/mm/fault_32.c
---
a/arch/x86/mm/fault_32.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/x86/mm/fault_32.c
@@ -593,7 +593,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", tsk->comm);
if (error_code & 4)
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
goto no_context;
do_sigbus:
diff -puN
arch/xtensa/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
arch/xtensa/mm/fault.c
---
a/arch/xtensa/mm/fault.c~during-vm-oom-condition-kill-all-threads-in-process-group
+++ a/arch/xtensa/mm/fault.c
@@ -152,7 +152,7 @@ out_of_memory:
}
printk("VM: killing process %s\n", current->comm);
if (user_mode(regs))
- do_exit(SIGKILL);
+ do_group_exit(SIGKILL);
bad_page_fault(regs, address, SIGKILL);
return;
_
Patches currently in -mm which might be from [EMAIL PROTECTED] are
origin.patch
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html