aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2007-02-05 15:17:29 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-02-05 15:17:29 -0500
commit35df8d53f5c951ac0cd79f1084e6787ca5980207 (patch)
treefc8d2abc161da739be40af49dfd0773aa8841a67
parentd58140cc18b3d69e86dead47aab5c838c08dc37e (diff)
[S390] Fix kprobes breakpoint handling.
In case of an illegal op the die notifier gets called with DIE_TRAP instead of DIE_BPT first. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/kernel/traps.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index aa0d7ee71c78..f0e5a320e2ec 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -490,8 +490,15 @@ static void illegal_op(struct pt_regs * regs, long interruption_code)
490#endif 490#endif
491 } else 491 } else
492 signal = SIGILL; 492 signal = SIGILL;
493 } else 493 } else {
494 signal = SIGILL; 494 /*
495 * If we get an illegal op in kernel mode, send it through the
496 * kprobes notifier. If kprobes doesn't pick it up, SIGILL
497 */
498 if (notify_die(DIE_BPT, "bpt", regs, interruption_code,
499 3, SIGTRAP) != NOTIFY_STOP)
500 signal = SIGILL;
501 }
495 502
496#ifdef CONFIG_MATHEMU 503#ifdef CONFIG_MATHEMU
497 if (signal == SIGFPE) 504 if (signal == SIGFPE)