From: ebiederm@xmission.com (Eric W. Biederman)
To: Christian Brauner <christian@brauner.io>
Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
mingo@kernel.org, james.morris@microsoft.com,
keescook@chromium.org, peterz@infradead.org, sds@tycho.nsa.gov,
viro@zeniv.linux.org.uk, akpm@linux-foundation.org,
oleg@redhat.com
Subject: Re: [PATCH v1 05/20] signal: flatten do_send_sig_info()
Date: Tue, 29 May 2018 07:28:27 -0500 [thread overview]
Message-ID: <87fu2asl1w.fsf@xmission.com> (raw)
In-Reply-To: <20180528215355.16119-6-christian@brauner.io> (Christian Brauner's message of "Mon, 28 May 2018 23:53:40 +0200")
Christian Brauner <christian@brauner.io> writes:
> Let's return early when lock_task_sighand() fails and move send_signal()
> and unlock_task_sighand() out of the if block.
Introducing multiple exits into a function. Ick.
You do know that is what Dijkstra was arguing against in his paper
"Goto Considered Harmful"
That introduces mutiple exits and makes the function harder to analyze.
It is especially a pain as I have something in my queue that will
shuffle things around and remove the possibility of lock_task_sighand
failing.
Eric
> Signed-off-by: Christian Brauner <christian@brauner.io>
> ---
> v0->v1:
> * patch unchanged
> ---
> kernel/signal.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/signal.c b/kernel/signal.c
> index baae137455eb..a628b56415e6 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -1167,16 +1167,16 @@ specific_send_sig_info(int sig, struct siginfo *info, struct task_struct *t)
> }
>
> int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p,
> - bool group)
> + bool group)
> {
> unsigned long flags;
> int ret = -ESRCH;
>
> - if (lock_task_sighand(p, &flags)) {
> - ret = send_signal(sig, info, p, group);
> - unlock_task_sighand(p, &flags);
> - }
> + if (!lock_task_sighand(p, &flags))
> + return ret;
>
> + ret = send_signal(sig, info, p, group);
> + unlock_task_sighand(p, &flags);
> return ret;
> }
next prev parent reply other threads:[~2018-05-29 12:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-28 21:53 [PATCH v1 00/20] signal: refactor some functions Christian Brauner
2018-05-28 21:53 ` [PATCH v1 01/20] signal: make force_sigsegv() void Christian Brauner
2018-05-28 21:53 ` [PATCH v1 02/20] signal: make kill_as_cred_perm() return bool Christian Brauner
2018-05-28 21:53 ` [PATCH v1 03/20] signal: make may_ptrace_stop() " Christian Brauner
2018-06-01 6:13 ` [lkp-robot] [signal] 1c6c57b1ea: WARNING:at_kernel/events/core.c:#perf_swevent_add kernel test robot
2018-05-28 21:53 ` [PATCH v1 04/20] signal: add copy_pending() helper Christian Brauner
2018-05-29 12:24 ` Eric W. Biederman
2018-05-29 12:41 ` Christian Brauner
2018-05-29 13:44 ` Eric W. Biederman
2018-05-29 13:55 ` Christian Brauner
2018-05-28 21:53 ` [PATCH v1 05/20] signal: flatten do_send_sig_info() Christian Brauner
2018-05-29 12:28 ` Eric W. Biederman [this message]
2018-05-29 12:38 ` Christian Brauner
2018-05-30 20:31 ` Eric W. Biederman
2018-05-28 21:53 ` [PATCH v1 06/20] signal: drop else branch in do_signal_stop() Christian Brauner
2018-05-29 14:30 ` Oleg Nesterov
2018-05-29 15:06 ` Christian Brauner
2018-05-28 21:53 ` [PATCH v1 07/20] signal: make do_sigpending() void Christian Brauner
2018-05-28 21:53 ` [PATCH v1 08/20] signal: simplify rt_sigaction() Christian Brauner
2018-05-28 21:53 ` [PATCH v1 09/20] signal: make kill_ok_by_cred() return bool Christian Brauner
2018-05-28 21:53 ` [PATCH v1 10/20] signal: make sig_handler_ignored() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 11/20] signal: make sig_task_ignored() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 12/20] signal: make sig_ignored() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 13/20] signal: make has_pending_signals() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 14/20] signal: make recalc_sigpending_tsk() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 15/20] signal: make unhandled_signal() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 16/20] signal: make flush_sigqueue_mask() void Christian Brauner
2018-05-28 21:53 ` [PATCH v1 17/20] signal: make wants_signal() return bool Christian Brauner
2018-05-28 21:53 ` [PATCH v1 18/20] signal: make legacy_queue() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 19/20] signal: make security_task_kill() " Christian Brauner
2018-05-28 21:53 ` [PATCH v1 20/20] signal: make get_signal() " Christian Brauner
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=87fu2asl1w.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=christian@brauner.io \
--cc=gregkh@linuxfoundation.org \
--cc=james.morris@microsoft.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=sds@tycho.nsa.gov \
--cc=viro@zeniv.linux.org.uk \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.