aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/traps.c')
-rw-r--r--arch/x86/kernel/traps.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 03f3d7695dac..a535dd64de63 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -299,6 +299,7 @@ static void do_error_trap(struct pt_regs *regs, long error_code, char *str,
299 if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) != 299 if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, signr) !=
300 NOTIFY_STOP) { 300 NOTIFY_STOP) {
301 cond_local_irq_enable(regs); 301 cond_local_irq_enable(regs);
302 clear_siginfo(&info);
302 do_trap(trapnr, signr, str, regs, error_code, 303 do_trap(trapnr, signr, str, regs, error_code,
303 fill_trap_info(regs, signr, trapnr, &info)); 304 fill_trap_info(regs, signr, trapnr, &info));
304 } 305 }
@@ -854,6 +855,7 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr)
854 855
855 task->thread.trap_nr = trapnr; 856 task->thread.trap_nr = trapnr;
856 task->thread.error_code = error_code; 857 task->thread.error_code = error_code;
858 clear_siginfo(&info);
857 info.si_signo = SIGFPE; 859 info.si_signo = SIGFPE;
858 info.si_errno = 0; 860 info.si_errno = 0;
859 info.si_addr = (void __user *)uprobe_get_trap_addr(regs); 861 info.si_addr = (void __user *)uprobe_get_trap_addr(regs);
@@ -929,6 +931,7 @@ dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code)
929 RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't wake RCU"); 931 RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't wake RCU");
930 local_irq_enable(); 932 local_irq_enable();
931 933
934 clear_siginfo(&info);
932 info.si_signo = SIGILL; 935 info.si_signo = SIGILL;
933 info.si_errno = 0; 936 info.si_errno = 0;
934 info.si_code = ILL_BADSTK; 937 info.si_code = ILL_BADSTK;