From 0bbdac0897a48f415eb788bf3263c92bd5e97ffb Mon Sep 17 00:00:00 2001
From: Helge Deller <deller@gmx.de>
Date: Sun, 7 Jan 2007 16:27:27 +0100
Subject: [PARISC] detect recursive kernel crash earlier

Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
---
 arch/parisc/kernel/traps.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

(limited to 'arch/parisc/kernel')

diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 7bf9e36f010d..1f62853e4c02 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -255,8 +255,16 @@ KERN_CRIT "                     ||     ||\n");
 		printk(KERN_CRIT "%s (pid %d): %s (code %ld)\n",
 			current->comm, current->pid, str, err);
 
-	dump_stack();
+	/* Wot's wrong wif bein' racy? */
+	if (current->thread.flags & PARISC_KERNEL_DEATH) {
+		printk(KERN_CRIT "%s() recursion detected.\n", __FUNCTION__);
+		local_irq_enable();
+		while (1);
+	}
+	current->thread.flags |= PARISC_KERNEL_DEATH;
+
 	show_regs(regs);
+	dump_stack();
 
 	if (in_interrupt())
 		panic("Fatal exception in interrupt");
@@ -267,14 +275,6 @@ KERN_CRIT "                     ||     ||\n");
 		panic("Fatal exception");
 	}
 
-	/* Wot's wrong wif bein' racy? */
-	if (current->thread.flags & PARISC_KERNEL_DEATH) {
-		printk(KERN_CRIT "%s() recursion detected.\n", __FUNCTION__);
-		local_irq_enable();
-		while (1);
-	}
-
-	current->thread.flags |= PARISC_KERNEL_DEATH;
 	do_exit(SIGSEGV);
 }
 
-- 
cgit v1.2.3