diff options
Diffstat (limited to 'arch/x86/kernel/traps.c')
| -rw-r--r-- | arch/x86/kernel/traps.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index a535dd64de63..e6db475164ed 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -835,16 +835,18 @@ static void math_error(struct pt_regs *regs, int error_code, int trapnr)  	char *str = (trapnr == X86_TRAP_MF) ? "fpu exception" :  						"simd exception"; -	if (notify_die(DIE_TRAP, str, regs, error_code, trapnr, SIGFPE) == NOTIFY_STOP) -		return;  	cond_local_irq_enable(regs);  	if (!user_mode(regs)) { -		if (!fixup_exception(regs, trapnr)) { -			task->thread.error_code = error_code; -			task->thread.trap_nr = trapnr; +		if (fixup_exception(regs, trapnr)) +			return; + +		task->thread.error_code = error_code; +		task->thread.trap_nr = trapnr; + +		if (notify_die(DIE_TRAP, str, regs, error_code, +					trapnr, SIGFPE) != NOTIFY_STOP)  			die(str, regs, error_code); -		}  		return;  	}  |