Title: [5996] trunk/arch/blackfin/kernel/traps.c: Add one more check on `fp' to prevent double fault.
Revision
5996
Author
jiez
Date
2009-01-12 01:25:44 -0600 (Mon, 12 Jan 2009)

Log Message

Add one more check on `fp' to prevent double fault.

Modified Paths


Diff

Modified: trunk/arch/blackfin/kernel/traps.c (5995 => 5996)


--- trunk/arch/blackfin/kernel/traps.c	2009-01-12 03:38:43 UTC (rev 5995)
+++ trunk/arch/blackfin/kernel/traps.c	2009-01-12 07:25:44 UTC (rev 5996)
@@ -819,11 +819,8 @@
 	decode_address(buf, (unsigned int)stack);
 	printk(KERN_NOTICE " SP: [0x%p] %s\n", stack, buf);
 
-	addr = (unsigned int *)((unsigned int)stack & ~0x3F);
-
 	/* First thing is to look for a frame pointer */
-	for (addr = (unsigned int *)((unsigned int)stack & ~0xF), i = 0;
-		addr < endstack; addr++, i++) {
+	for (addr = (unsigned int *)((unsigned int)stack & ~0xF); addr < endstack; addr++) {
 		if (*addr & 0x1)
 			continue;
 		ins_addr = (unsigned short *)*addr;
@@ -833,7 +830,8 @@
 
 		if (fp) {
 			/* Let's check to see if it is a frame pointer */
-			while (fp >= (addr - 1) && fp < endstack && fp)
+			while (fp >= (addr - 1) && fp < endstack
+			       && fp && ((unsigned int) fp & 0x3) == 0)
 				fp = (unsigned int *)*fp;
 			if (fp == 0 || fp == endstack) {
 				fp = addr - 1;
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to