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