From: Rich Felker <dalias@libc.org>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
Yoshinori Sato <ysato@users.sourceforge.jp>,
linux-sh@vger.kernel.org
Subject: Re: [REVIEW][PATCH 16/22] signal/sh: Use force_sig_fault where appropriate
Date: Fri, 20 Apr 2018 10:55:14 -0400 [thread overview]
Message-ID: <20180420145514.GP3094@brightrain.aerifal.cx> (raw)
In-Reply-To: <20180420143811.9994-16-ebiederm@xmission.com>
On Fri, Apr 20, 2018 at 09:38:05AM -0500, Eric W. Biederman wrote:
> 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: Yoshinori Sato <ysato@users.sourceforge.jp>
> Cc: Rich Felker <dalias@libc.org>
> Cc: linux-sh@vger.kernel.org
> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
> ---
> arch/sh/kernel/traps_32.c | 19 +++++--------------
> arch/sh/math-emu/math.c | 9 ++-------
> arch/sh/mm/fault.c | 10 +---------
> 3 files changed, 8 insertions(+), 30 deletions(-)
>
> diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c
> index e85e59c3d6df..660a4bc17698 100644
> --- a/arch/sh/kernel/traps_32.c
> +++ b/arch/sh/kernel/traps_32.c
> @@ -477,7 +477,6 @@ asmlinkage void do_address_error(struct pt_regs *regs,
> {
> unsigned long error_code = 0;
> mm_segment_t oldfs;
> - siginfo_t info;
> insn_size_t instruction;
> int tmp;
>
> @@ -537,12 +536,7 @@ asmlinkage void do_address_error(struct pt_regs *regs,
> "access (PC %lx PR %lx)\n", current->comm, regs->pc,
> regs->pr);
>
> - clear_siginfo(&info);
> - info.si_signo = SIGBUS;
> - info.si_errno = 0;
> - info.si_code = si_code;
> - info.si_addr = (void __user *)address;
> - force_sig_info(SIGBUS, &info, current);
> + force_sig_fault(SIGBUS, si_code, (void __user *)address, current);
> } else {
> inc_unaligned_kernel_access();
>
> @@ -599,20 +593,17 @@ int is_dsp_inst(struct pt_regs *regs)
> #ifdef CONFIG_CPU_SH2A
> asmlinkage void do_divide_error(unsigned long r4)
> {
> - siginfo_t info;
> + int code;
>
> - clear_siginfo(&info);
> switch (r4) {
> case TRAP_DIVZERO_ERROR:
> - info.si_code = FPE_INTDIV;
> + code = FPE_INTDIV;
> break;
> case TRAP_DIVOVF_ERROR:
> - info.si_code = FPE_INTOVF;
> + code = FPE_INTOVF;
> break;
> }
> -
> - info.si_signo = SIGFPE;
> - force_sig_info(info.si_signo, &info, current);
> + force_sig_fault(SIGFPE, code, NULL, current);
> }
> #endif
>
> diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c
> index d6d2213df078..a0fa8fc88739 100644
> --- a/arch/sh/math-emu/math.c
> +++ b/arch/sh/math-emu/math.c
> @@ -507,7 +507,6 @@ static int ieee_fpe_handler(struct pt_regs *regs)
> unsigned short insn = *(unsigned short *)regs->pc;
> unsigned short finsn;
> unsigned long nextpc;
> - siginfo_t info;
> int nib[4] = {
> (insn >> 12) & 0xf,
> (insn >> 8) & 0xf,
> @@ -560,12 +559,8 @@ static int ieee_fpe_handler(struct pt_regs *regs)
> ~(FPSCR_CAUSE_MASK | FPSCR_FLAG_MASK);
> task_thread_info(tsk)->status |= TS_USEDFPU;
> } else {
> - clear_siginfo(&info);
> - info.si_signo = SIGFPE;
> - info.si_errno = 0;
> - info.si_code = FPE_FLTINV;
> - info.si_addr = (void __user *)regs->pc;
> - force_sig_info(SIGFPE, &info, tsk);
> + force_sig_fault(SIGFPE, FPE_FLTINV,
> + (void __user *)regs->pc, tsk);
> }
>
> regs->pc = nextpc;
> diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c
> index 4c98b6f20e02..b8e7bb84b6b1 100644
> --- a/arch/sh/mm/fault.c
> +++ b/arch/sh/mm/fault.c
> @@ -42,15 +42,7 @@ static void
> force_sig_info_fault(int si_signo, int si_code, unsigned long address,
> struct task_struct *tsk)
> {
> - siginfo_t info;
> -
> - clear_siginfo(&info);
> - info.si_signo = si_signo;
> - info.si_errno = 0;
> - info.si_code = si_code;
> - info.si_addr = (void __user *)address;
> -
> - force_sig_info(si_signo, &info, tsk);
> + force_sig_fault(si_signo, si_code, (void __user *)address, tsk);
> }
>
> /*
> --
> 2.14.1
Acked-by: Rich Felker <dalias@libc.org>
next prev parent reply other threads:[~2018-04-20 14:55 UTC|newest]
Thread overview: 154+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-20 1:01 [REVIEW][PATCH 00/17] siginfo bugfixes and cleanups Eric W. Biederman
2018-04-20 1:01 ` Eric W. Biederman
2018-04-20 1:03 ` [REVIEW][PATCH 01/17] signal/alpha: Document a conflict with SI_USER for SIGFPE Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-20 1:03 ` [REVIEW][PATCH 02/17] sparc: fix compat siginfo ABI regression Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-20 1:03 ` [REVIEW][PATCH 03/17] signal/sh: Use force_sig_fault in hw_breakpoint_handler Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-20 1:03 ` [REVIEW][PATCH 04/17] signal/nds32: Use force_sig in unhandled_interruption and unhandled_exceptions Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-25 12:14 ` Vincent Chen
2018-04-25 12:14 ` Vincent Chen
2018-04-20 1:03 ` [REVIEW][PATCH 05/17] signal/nds32: Use force_sig(SIGILL) in do_revisn Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-25 12:10 ` Vincent Chen
2018-04-25 12:10 ` Vincent Chen
2018-04-25 16:13 ` [PATCH] signal/nds32: More information in do_revinsn Eric W. Biederman
2018-04-25 16:13 ` Eric W. Biederman
2018-04-26 3:02 ` Vincent Chen
2018-04-26 3:02 ` Vincent Chen
2018-04-20 1:03 ` [REVIEW][PATCH 06/17] signal: Ensure every siginfo we send has all bits initialized Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-20 1:03 ` [REVIEW][PATCH 07/17] signal: Reduce copy_siginfo_to_user to just copy_to_user Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-20 1:03 ` [REVIEW][PATCH 08/17] signal: Stop special casing TRAP_FIXME and FPE_FIXME in siginfo_layout Eric W. Biederman
2018-04-20 1:03 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 09/17] signal: Remove SEGV_BNDERR ifdefs Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 10/17] signal: Remove ifdefs for BUS_MCEERR_AR and BUS_MCEERR_AO Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 11/17] signal/alpha: Replace FPE_FIXME with FPE_FLTUNK Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 12/17] signal/ia64: " Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 13/17] signal/powerpc: " Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 14/17] signal/unicore32: Use FPE_FLTUNK instead of 0 in ucf64_raise_sigfpe Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 15/17] signal: Add TRAP_UNK si_code for undiagnosted trap exceptions Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 16/17] signal/alpha: Replace TRAP_FIXME with TRAP_UNK Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 1:04 ` [REVIEW][PATCH 17/17] signal/powerpc: " Eric W. Biederman
2018-04-20 1:04 ` Eric W. Biederman
2018-04-20 14:35 ` [REVIEW][PATCH 00/22] Simplifying siginfo users Eric W. Biederman
2018-04-20 14:35 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 01/22] signal/alpha: Use send_sig_fault where appropriate Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 02/22] signal/alpha: Use force_sig_fault " Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 03/22] signal/c6x: " Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 04/22] signal/hexagon: Use force_sig_fault as appropriate Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 05/22] signal/m68k: Use force_sig_fault where appropriate Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 06/22] signal/microblaze: Remove the commented out force_sig_info in do_page_fault Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 07/22] signal/microblaze: Use force_sig_fault where appropriate Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 08/22] signal/mips: " Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-05-09 15:14 ` Matt Redfearn
2018-05-09 15:14 ` Matt Redfearn
2018-05-10 2:39 ` Eric W. Biederman
2018-05-10 2:39 ` Eric W. Biederman
2018-05-10 7:59 ` Matt Redfearn
2018-05-10 7:59 ` Matt Redfearn
2018-05-11 2:31 ` Eric W. Biederman
2018-05-11 2:31 ` Eric W. Biederman
2018-04-20 14:37 ` [REVIEW][PATCH 09/22] signal/nds32: " Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-25 11:29 ` Vincent Chen
2018-04-25 11:29 ` Vincent Chen
2018-04-25 15:57 ` Eric W. Biederman
2018-04-25 15:57 ` Eric W. Biederman
2018-04-26 1:24 ` Greentime Hu
2018-04-26 1:24 ` Greentime Hu
2018-04-20 14:37 ` [REVIEW][PATCH 10/22] signal/nios2: " Eric W. Biederman
2018-04-20 14:37 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 11/22] signal/openrisc: " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 12/22] signal/parisc: Use force_sig_mceerr " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 13/22] signal/parisc: Use force_sig_fault " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-21 17:24 ` Helge Deller
2018-04-21 17:24 ` Helge Deller
2018-04-20 14:38 ` [REVIEW][PATCH 14/22] signal/riscv: " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-21 7:25 ` Christoph Hellwig
2018-04-21 7:25 ` Christoph Hellwig
2018-04-24 15:31 ` [REVIEW][PATCH 23/22] signal/riscv: Replace do_trap_siginfo with force_sig_fault Eric W. Biederman
2018-04-24 15:31 ` Eric W. Biederman
2018-04-23 19:11 ` [REVIEW][PATCH 14/22] signal/riscv: Use force_sig_fault where appropriate Palmer Dabbelt
2018-04-23 19:11 ` Palmer Dabbelt
2018-04-24 15:28 ` Eric W. Biederman
2018-04-24 15:28 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 15/22] signal/s390: " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-23 5:44 ` Martin Schwidefsky
2018-04-23 5:44 ` Martin Schwidefsky
2018-04-20 14:38 ` [REVIEW][PATCH 16/22] signal/sh: " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 14:55 ` Rich Felker [this message]
2018-04-20 14:55 ` Rich Felker
2018-05-28 9:19 ` Geert Uytterhoeven
2018-05-28 9:19 ` Geert Uytterhoeven
2018-05-29 15:00 ` [PATCH] signal/sh: Stop gcc warning about an impossible case in do_divide_error Eric W. Biederman
2018-05-29 15:00 ` Eric W. Biederman
2018-05-30 7:54 ` Sergei Shtylyov
2018-05-30 7:54 ` Sergei Shtylyov
2018-04-20 14:38 ` [REVIEW][PATCH 17/22] signal/sparc: Use send_sig_fault where appropriate Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 18/22] signal/sparc: Use force_sig_fault " Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 19/22] signal/um: Use force_sig_fault in relay_signal Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 16:06 ` [uml-devel] " Anton Ivanov
2018-04-20 16:06 ` Anton Ivanov
2018-04-24 8:32 ` Richard Weinberger
2018-04-24 8:32 ` Richard Weinberger
2018-04-24 8:44 ` Anton Ivanov
2018-04-24 8:44 ` Anton Ivanov
2018-04-24 15:59 ` Eric W. Biederman
2018-04-24 15:59 ` Eric W. Biederman
[not found] ` <CAMD8JhwgcWCp6c=O4-spNW1VdY5M-eAjr7M5PieeAfeTSe_4yw@mail.gmail.com>
2018-04-24 22:03 ` Martin Pärtel
2018-04-24 22:03 ` Martin Pärtel
2018-04-24 22:24 ` Eric W. Biederman
2018-04-24 22:24 ` Eric W. Biederman
2018-04-25 23:05 ` Martin Pärtel
2018-04-25 23:05 ` Martin Pärtel
2018-04-28 14:02 ` [REVIEW][PATCH 0/5] Improving siginfo_layout and fixing uml's relay_signal Eric W. Biederman
2018-04-28 14:02 ` Eric W. Biederman
2018-04-28 14:06 ` [REVIEW][PATCH 1/5] signal/signalfd: Remove __put_user from signalfd_copyinfo Eric W. Biederman
2018-04-28 14:06 ` Eric W. Biederman
2018-04-28 14:06 ` [REVIEW][PATCH 2/5] signal/signalfd: Add support for SIGSYS Eric W. Biederman
2018-04-28 14:06 ` Eric W. Biederman
2018-04-28 14:07 ` [REVIEW][PATCH 3/5] signal: Remove unncessary #ifdef SEGV_PKUERR in 32bit compat code Eric W. Biederman
2018-04-28 14:07 ` Eric W. Biederman
2018-04-28 14:07 ` [REVIEW][PATCH 4/5] signal: Extend siginfo_layout with SIL_FAULT_{MCEERR|BNDERR|PKUERR} Eric W. Biederman
2018-04-28 14:07 ` Eric W. Biederman
2018-04-28 14:07 ` [REVIEW][PATCH 5/5] signal/um: More carefully relay signals in relay_signal Eric W. Biederman
2018-04-28 14:07 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 20/22] signal/um: Use force_sig_fault where appropriate Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 14:38 ` [REVIEW][PATCH 21/22] signal/xtensa: Consistenly use SIGBUS in do_unaligned_user Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 16:06 ` Max Filippov
2018-04-20 16:06 ` Max Filippov
2018-04-20 14:38 ` [REVIEW][PATCH 22/22] signal/xtensa: Use force_sig_fault where appropriate Eric W. Biederman
2018-04-20 14:38 ` Eric W. Biederman
2018-04-20 16:27 ` Max Filippov
2018-04-20 16:27 ` Max Filippov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180420145514.GP3094@brightrain.aerifal.cx \
--to=dalias@libc.org \
--cc=ebiederm@xmission.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=ysato@users.sourceforge.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).