| From 550f0d922286556c7ea43974bb7921effb5a5278 Mon Sep 17 00:00:00 2001 |
| From: Helge Deller <deller@gmx.de> |
| Date: Mon, 3 May 2010 20:44:21 +0000 |
| Subject: parisc: clear floating point exception flag on SIGFPE signal |
| |
| From: Helge Deller <deller@gmx.de> |
| |
| commit 550f0d922286556c7ea43974bb7921effb5a5278 upstream. |
| |
| Clear the floating point exception flag before returning to |
| user space. This is needed, else the libc trampoline handler |
| may hit the same SIGFPE again while building up a trampoline |
| to a signal handler. |
| |
| Fixes debian bug #559406. |
| |
| Signed-off-by: Helge Deller <deller@gmx.de> |
| Signed-off-by: Kyle McMartin <kyle@mcmartin.ca> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/parisc/math-emu/decode_exc.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/arch/parisc/math-emu/decode_exc.c |
| +++ b/arch/parisc/math-emu/decode_exc.c |
| @@ -342,6 +342,7 @@ decode_fpu(unsigned int Fpu_register[], |
| return SIGNALCODE(SIGFPE, FPE_FLTINV); |
| case DIVISIONBYZEROEXCEPTION: |
| update_trap_counts(Fpu_register, aflags, bflags, trap_counts); |
| + Clear_excp_register(exception_index); |
| return SIGNALCODE(SIGFPE, FPE_FLTDIV); |
| case INEXACTEXCEPTION: |
| update_trap_counts(Fpu_register, aflags, bflags, trap_counts); |