Title: [3900] trunk/arch/blackfin/kernel/traps.c: [#2424] We need to send signals with the proper PC, or gdb gets
Revision
3900
Author
rgetz
Date
2007-11-19 19:33:32 -0600 (Mon, 19 Nov 2007)

Log Message

[#2424] We need to send signals with the proper PC, or gdb gets
confused, and lots of tests fail. This should fix that.

Diffstat

 traps.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

Modified Paths

Diff

Modified: trunk/arch/blackfin/kernel/traps.c (3899 => 3900)


--- trunk/arch/blackfin/kernel/traps.c	2007-11-20 01:27:40 UTC (rev 3899)
+++ trunk/arch/blackfin/kernel/traps.c	2007-11-20 01:33:32 UTC (rev 3900)
@@ -462,18 +462,20 @@
 #endif
 			panic("Kernel exception");
 		}
+	}
 
-		/* Ensure that bad return addresses don't end up in an infinite
-		 * loop, due to speculative loads/reads
-		 */
-		if (trapnr == VEC_CPLB_I_M)
-			fp->pc = SAFE_USER_INSTRUCTION;
-	}
 	info.si_signo = sig;
 	info.si_errno = 0;
 	info.si_addr = (void *)fp->pc;
 	force_sig_info(sig, &info, current);
 
+	/* Ensure that bad return addresses don't end up in an infinite
+	 * loop, due to speculative loads/reads. This needs to be done after
+	 * the signal has been sent.
+	 */
+	if (trapnr == VEC_CPLB_I_M && sig != SIGTRAP)
+		fp->pc = SAFE_USER_INSTRUCTION;
+
 	trace_buffer_restore(j);
 	return;
 }
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to