Ver Fonte

i386, dumpstack: unify die()

Make i386's die() equal to x86_64's version.

Whitespace-only changes on x86_64, to make it equal to i386's
version. (user_mode and user_mode_vm are equal on x86_64.)

Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Alexander van Heukelum há 16 anos atrás
pai
commit
871d3779cb
2 ficheiros alterados com 8 adições e 8 exclusões
  1. 3 7
      arch/x86/kernel/dumpstack_32.c
  2. 5 1
      arch/x86/kernel/dumpstack_64.c

+ 3 - 7
arch/x86/kernel/dumpstack_32.c

@@ -378,15 +378,11 @@ void die(const char *str, struct pt_regs *regs, long err)
 	unsigned long flags = oops_begin();
 	unsigned long flags = oops_begin();
 	int sig = SIGSEGV;
 	int sig = SIGSEGV;
 
 
-	if (die_nest_count < 3) {
+	if (!user_mode_vm(regs))
 		report_bug(regs->ip, regs);
 		report_bug(regs->ip, regs);
 
 
-		if (__die(str, regs, err))
-			sig = 0;
-	} else {
-		printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
-	}
-
+	if (__die(str, regs, err))
+		sig = 0;
 	oops_end(flags, regs, sig);
 	oops_end(flags, regs, sig);
 }
 }
 
 

+ 5 - 1
arch/x86/kernel/dumpstack_64.c

@@ -506,12 +506,16 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err)
 	return 0;
 	return 0;
 }
 }
 
 
+/*
+ * This is gone through when something in the kernel has done something bad
+ * and is about to be terminated:
+ */
 void die(const char *str, struct pt_regs *regs, long err)
 void die(const char *str, struct pt_regs *regs, long err)
 {
 {
 	unsigned long flags = oops_begin();
 	unsigned long flags = oops_begin();
 	int sig = SIGSEGV;
 	int sig = SIGSEGV;
 
 
-	if (!user_mode(regs))
+	if (!user_mode_vm(regs))
 		report_bug(regs->ip, regs);
 		report_bug(regs->ip, regs);
 
 
 	if (__die(str, regs, err))
 	if (__die(str, regs, err))