diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2018-04-19 19:14:26 -0500 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2018-04-25 10:44:06 -0500 |
commit | ccf75290cc646316c3f1ca960ce71941ff72afab (patch) | |
tree | 845702b7b311cb119013201ae643f0cbaf6cc003 /arch/parisc/math-emu/driver.c | |
parent | c2b0e0d33b5573d4cb426e9c3ddbf2aad5e1d8a7 (diff) |
signal/parisc: Use force_sig_fault where appropriate
Filling in struct siginfo before calling force_sig_info a tedious and
error prone process, where once in a great while the wrong fields
are filled out, and siginfo has been inconsistently cleared.
Simplify this process by using the helper force_sig_fault. Which
takes as a parameters all of the information it needs, ensures
all of the fiddly bits of filling in struct siginfo are done properly
and then calls force_sig_info.
In short about a 5 line reduction in code for every time force_sig_info
is called, which makes the calling function clearer.
Cc: James Bottomley <jejb@parisc-linux.org>
Cc: Helge Deller <deller@gmx.de>
Cc: linux-parisc@vger.kernel.org
Acked-by: Helge Deller <deller@gmx.de> # parisc
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Diffstat (limited to 'arch/parisc/math-emu/driver.c')
-rw-r--r-- | arch/parisc/math-emu/driver.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/parisc/math-emu/driver.c b/arch/parisc/math-emu/driver.c index 0d10efb53361..0590e05571d1 100644 --- a/arch/parisc/math-emu/driver.c +++ b/arch/parisc/math-emu/driver.c @@ -81,7 +81,6 @@ int handle_fpe(struct pt_regs *regs) { extern void printbinary(unsigned long x, int nbits); - struct siginfo si; unsigned int orig_sw, sw; int signalcode; /* need an intermediate copy of float regs because FPU emulation @@ -93,7 +92,6 @@ handle_fpe(struct pt_regs *regs) */ __u64 frcopy[36]; - clear_siginfo(&si); memcpy(frcopy, regs->fr, sizeof regs->fr); frcopy[32] = 0; @@ -118,11 +116,8 @@ handle_fpe(struct pt_regs *regs) memcpy(regs->fr, frcopy, sizeof regs->fr); if (signalcode != 0) { - si.si_signo = signalcode >> 24; - si.si_errno = 0; - si.si_code = signalcode & 0xffffff; - si.si_addr = (void __user *) regs->iaoq[0]; - force_sig_info(si.si_signo, &si, current); + force_sig_fault(signalcode >> 24, signalcode & 0xffffff, + (void __user *) regs->iaoq[0], current); return -1; } |