aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander van Heukelum <heukelum@fastmail.fm>2008-10-22 06:00:14 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-22 08:00:26 -0400
commit871d3779cba18b028e34d0d2f6cc6caae76a97b6 (patch)
tree858df7bc1f66d47bb6969af31f6c843eb7e361a5
parente06ca430c3d0fddbd1c901ab3fb3e1f0bc8a786b (diff)
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>
-rw-r--r--arch/x86/kernel/dumpstack_32.c10
-rw-r--r--arch/x86/kernel/dumpstack_64.c6
2 files changed, 8 insertions, 8 deletions
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
index e91ae34f9684..f2046c5752d0 100644
--- a/arch/x86/kernel/dumpstack_32.c
+++ b/arch/x86/kernel/dumpstack_32.c
@@ -378,15 +378,11 @@ void die(const char *str, struct pt_regs *regs, long err)
378 unsigned long flags = oops_begin(); 378 unsigned long flags = oops_begin();
379 int sig = SIGSEGV; 379 int sig = SIGSEGV;
380 380
381 if (die_nest_count < 3) { 381 if (!user_mode_vm(regs))
382 report_bug(regs->ip, regs); 382 report_bug(regs->ip, regs);
383 383
384 if (__die(str, regs, err)) 384 if (__die(str, regs, err))
385 sig = 0; 385 sig = 0;
386 } else {
387 printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
388 }
389
390 oops_end(flags, regs, sig); 386 oops_end(flags, regs, sig);
391} 387}
392 388
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
index 831e1e159cb4..28c67aae5562 100644
--- a/arch/x86/kernel/dumpstack_64.c
+++ b/arch/x86/kernel/dumpstack_64.c
@@ -506,12 +506,16 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err)
506 return 0; 506 return 0;
507} 507}
508 508
509/*
510 * This is gone through when something in the kernel has done something bad
511 * and is about to be terminated:
512 */
509void die(const char *str, struct pt_regs *regs, long err) 513void die(const char *str, struct pt_regs *regs, long err)
510{ 514{
511 unsigned long flags = oops_begin(); 515 unsigned long flags = oops_begin();
512 int sig = SIGSEGV; 516 int sig = SIGSEGV;
513 517
514 if (!user_mode(regs)) 518 if (!user_mode_vm(regs))
515 report_bug(regs->ip, regs); 519 report_bug(regs->ip, regs);
516 520
517 if (__die(str, regs, err)) 521 if (__die(str, regs, err))