Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 51dd709f authored by Eric W. Biederman's avatar Eric W. Biederman
Browse files

signal/ia64: Replace FPE_FIXME with FPE_FLTUNK



Using an si_code of 0 that aliases with SI_USER is clearly the wrong
thing todo, and causes problems in interesting ways.

The newly defined FPE_FLTUNK semantically appears to fit the bill so
use it instead.

Given recent experience in this area odds are it will not
break anything.  Fixing it removes a hazard to kernel maintenance.

Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
Fixes: 987159266c45 ("Linux version 2.3.48")
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 4cc13e4f
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -27,11 +27,4 @@
#define __ISR_VALID_BIT	0
#define __ISR_VALID	(1 << __ISR_VALID_BIT)

/*
 * SIGFPE si_codes
 */
#ifdef __KERNEL__
#define FPE_FIXME	0	/* Broken dup of SI_USER */
#endif /* __KERNEL__ */

#endif /* _UAPI_ASM_IA64_SIGINFO_H */
+2 −2
Original line number Diff line number Diff line
@@ -353,7 +353,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr)
			clear_siginfo(&siginfo);
			siginfo.si_signo = SIGFPE;
			siginfo.si_errno = 0;
			siginfo.si_code = FPE_FIXME;	/* default code */
			siginfo.si_code = FPE_FLTUNK;	/* default code */
			siginfo.si_addr = (void __user *) (regs->cr_iip + ia64_psr(regs)->ri);
			if (isr & 0x11) {
				siginfo.si_code = FPE_FLTINV;
@@ -380,7 +380,7 @@ handle_fpu_swa (int fp_fault, struct pt_regs *regs, unsigned long isr)
			clear_siginfo(&siginfo);
			siginfo.si_signo = SIGFPE;
			siginfo.si_errno = 0;
			siginfo.si_code = FPE_FIXME;	/* default code */
			siginfo.si_code = FPE_FLTUNK;	/* default code */
			siginfo.si_addr = (void __user *) (regs->cr_iip + ia64_psr(regs)->ri);
			if (isr & 0x880) {
				siginfo.si_code = FPE_FLTOVF;