The patch titled Subject: signal: simplify rt_sigaction() has been added to the -mm tree. Its filename is signal-simplify-rt_sigaction.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/signal-simplify-rt_sigaction.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/signal-simplify-rt_sigaction.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Christian Brauner <christian@xxxxxxxxxx> Subject: signal: simplify rt_sigaction() The goto is not needed and does not add any clarity. Simply return -EINVAL on unexpected sigset_t struct size directly. Link: http://lkml.kernel.org/r/20180602103653.18181-6-christian@xxxxxxxxxx Signed-off-by: Christian Brauner <christian@xxxxxxxxxx> Acked-by: Oleg Nesterov <oleg@xxxxxxxxxx> Reviewed-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: James Morris <james.morris@xxxxxxxxxxxxx> Cc: Kees Cook <keescook@xxxxxxxxxxxx> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Cc: Stephen Smalley <sds@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/signal.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff -puN kernel/signal.c~signal-simplify-rt_sigaction kernel/signal.c --- a/kernel/signal.c~signal-simplify-rt_sigaction +++ a/kernel/signal.c @@ -3648,25 +3648,23 @@ SYSCALL_DEFINE4(rt_sigaction, int, sig, size_t, sigsetsize) { struct k_sigaction new_sa, old_sa; - int ret = -EINVAL; + int ret; /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) - goto out; + return -EINVAL; - if (act) { - if (copy_from_user(&new_sa.sa, act, sizeof(new_sa.sa))) - return -EFAULT; - } + if (act && copy_from_user(&new_sa.sa, act, sizeof(new_sa.sa))) + return -EFAULT; ret = do_sigaction(sig, act ? &new_sa : NULL, oact ? &old_sa : NULL); + if (ret) + return ret; - if (!ret && oact) { - if (copy_to_user(oact, &old_sa.sa, sizeof(old_sa.sa))) - return -EFAULT; - } -out: - return ret; + if (oact && copy_to_user(oact, &old_sa.sa, sizeof(old_sa.sa))) + return -EFAULT; + + return 0; } #ifdef CONFIG_COMPAT COMPAT_SYSCALL_DEFINE4(rt_sigaction, int, sig, _ Patches currently in -mm which might be from christian@xxxxxxxxxx are signal-make-force_sigsegv-void.patch signal-make-kill_as_cred_perm-return-bool.patch signal-make-may_ptrace_stop-return-bool.patch signal-make-do_sigpending-void.patch signal-simplify-rt_sigaction.patch signal-make-kill_ok_by_cred-return-bool.patch signal-make-sig_handler_ignored-return-bool.patch signal-make-sig_task_ignored-return-bool.patch signal-make-sig_ignored-return-bool.patch signal-make-has_pending_signals-return-bool.patch signal-make-recalc_sigpending_tsk-return-bool.patch signal-make-unhandled_signal-return-bool.patch signal-make-flush_sigqueue_mask-void.patch signal-make-wants_signal-return-bool.patch signal-make-legacy_queue-return-bool.patch signal-make-sigkill_pending-return-bool.patch signal-make-get_signal-return-bool.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html