diff options
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r-- | arch/s390/kernel/traps.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 70640822621a..5eb78dd584ce 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -365,12 +365,10 @@ static inline void __user *get_psw_address(struct pt_regs *regs, | |||
365 | ((regs->psw.addr - (pgm_int_code >> 16)) & PSW_ADDR_INSN); | 365 | ((regs->psw.addr - (pgm_int_code >> 16)) & PSW_ADDR_INSN); |
366 | } | 366 | } |
367 | 367 | ||
368 | void __kprobes do_single_step(struct pt_regs *regs) | 368 | void __kprobes do_per_trap(struct pt_regs *regs) |
369 | { | 369 | { |
370 | if (notify_die(DIE_SSTEP, "sstep", regs, 0, 0, | 370 | if (notify_die(DIE_SSTEP, "sstep", regs, 0, 0, SIGTRAP) == NOTIFY_STOP) |
371 | SIGTRAP) == NOTIFY_STOP){ | ||
372 | return; | 371 | return; |
373 | } | ||
374 | if (tracehook_consider_fatal_signal(current, SIGTRAP)) | 372 | if (tracehook_consider_fatal_signal(current, SIGTRAP)) |
375 | force_sig(SIGTRAP, current); | 373 | force_sig(SIGTRAP, current); |
376 | } | 374 | } |
@@ -451,8 +449,8 @@ static inline void do_fp_trap(struct pt_regs *regs, void __user *location, | |||
451 | "floating point exception", regs, &si); | 449 | "floating point exception", regs, &si); |
452 | } | 450 | } |
453 | 451 | ||
454 | static void illegal_op(struct pt_regs *regs, long pgm_int_code, | 452 | static void __kprobes illegal_op(struct pt_regs *regs, long pgm_int_code, |
455 | unsigned long trans_exc_code) | 453 | unsigned long trans_exc_code) |
456 | { | 454 | { |
457 | siginfo_t info; | 455 | siginfo_t info; |
458 | __u8 opcode[6]; | 456 | __u8 opcode[6]; |
@@ -688,7 +686,7 @@ static void space_switch_exception(struct pt_regs *regs, long pgm_int_code, | |||
688 | do_trap(pgm_int_code, SIGILL, "space switch event", regs, &info); | 686 | do_trap(pgm_int_code, SIGILL, "space switch event", regs, &info); |
689 | } | 687 | } |
690 | 688 | ||
691 | asmlinkage void kernel_stack_overflow(struct pt_regs * regs) | 689 | asmlinkage void __kprobes kernel_stack_overflow(struct pt_regs * regs) |
692 | { | 690 | { |
693 | bust_spinlocks(1); | 691 | bust_spinlocks(1); |
694 | printk("Kernel stack overflow.\n"); | 692 | printk("Kernel stack overflow.\n"); |
@@ -733,5 +731,6 @@ void __init trap_init(void) | |||
733 | pgm_check_table[0x15] = &operand_exception; | 731 | pgm_check_table[0x15] = &operand_exception; |
734 | pgm_check_table[0x1C] = &space_switch_exception; | 732 | pgm_check_table[0x1C] = &space_switch_exception; |
735 | pgm_check_table[0x1D] = &hfp_sqrt_exception; | 733 | pgm_check_table[0x1D] = &hfp_sqrt_exception; |
736 | pfault_irq_init(); | 734 | /* Enable machine checks early. */ |
735 | local_mcck_enable(); | ||
737 | } | 736 | } |