aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r--arch/s390/kernel/traps.c15
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
368void __kprobes do_single_step(struct pt_regs *regs) 368void __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
454static void illegal_op(struct pt_regs *regs, long pgm_int_code, 452static 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
691asmlinkage void kernel_stack_overflow(struct pt_regs * regs) 689asmlinkage 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}