2008-08-02 13:00:37

by Oliver Pinter

[permalink] [raw]
Subject: [RFC, 2.6.26.2-rc1] signals: do_signal_stop: kill the SIGNAL_UNKILLABLE check

>From 2b201a9eddf509e8e935b45e573648e36f4b623f Mon Sep 17 00:00:00 2001
From: Oleg Nesterov <[email protected]>
Date: Fri, 25 Jul 2008 01:47:31 -0700
Subject: [PATCH] signals: do_signal_stop: kill the SIGNAL_UNKILLABLE check

[ Upstream commit 2b201a9eddf509e8e935b45e573648e36f4b623f ]

fae5fa44f1fd079ffbed8e0add929dd7bbd1347f changed do_signal_stop() to check
SIGNAL_UNKILLABLE, this wasn't needed. If signal_group_exit() == F, the
signal sent to SIGNAL_UNKILLABLE task must be already filtered out by the
caller, get_signal_to_deliver(). And if signal_group_exit() == T we are
not going to stop.

Signed-off-by: Oleg Nesterov <[email protected]>
Acked-by: Roland McGrath <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
CC: Oliver Pinter <[email protected]>

diff --git a/kernel/signal.c b/kernel/signal.c
index 15f901a..0514da5 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1649,8 +1649,7 @@ static int do_signal_stop(int signr)
} else {
struct task_struct *t;

- if (unlikely((sig->flags & (SIGNAL_STOP_DEQUEUED | SIGNAL_UNKILLABLE))
- != SIGNAL_STOP_DEQUEUED) ||
+ if (!likely(sig->flags & SIGNAL_STOP_DEQUEUED) ||
unlikely(signal_group_exit(sig)))
return 0;
/*


2008-08-03 10:50:28

by Oleg Nesterov

[permalink] [raw]
Subject: Re: [RFC, 2.6.26.2-rc1] signals: do_signal_stop: kill the SIGNAL_UNKILLABLE check

On 08/02, Oliver Pinter wrote:
>
> >From 2b201a9eddf509e8e935b45e573648e36f4b623f Mon Sep 17 00:00:00 2001
> From: Oleg Nesterov <[email protected]>
> Date: Fri, 25 Jul 2008 01:47:31 -0700
> Subject: [PATCH] signals: do_signal_stop: kill the SIGNAL_UNKILLABLE check
>
> [ Upstream commit 2b201a9eddf509e8e935b45e573648e36f4b623f ]
>
> fae5fa44f1fd079ffbed8e0add929dd7bbd1347f changed do_signal_stop() to check
> SIGNAL_UNKILLABLE, this wasn't needed. If signal_group_exit() == F, the
> signal sent to SIGNAL_UNKILLABLE task must be already filtered out by the
> caller, get_signal_to_deliver(). And if signal_group_exit() == T we are
> not going to stop.
>
> Signed-off-by: Oleg Nesterov <[email protected]>
> Acked-by: Roland McGrath <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> Signed-off-by: Linus Torvalds <[email protected]>
> CC: Oliver Pinter <[email protected]>
>
> diff --git a/kernel/signal.c b/kernel/signal.c
> index 15f901a..0514da5 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -1649,8 +1649,7 @@ static int do_signal_stop(int signr)
> } else {
> struct task_struct *t;
>
> - if (unlikely((sig->flags & (SIGNAL_STOP_DEQUEUED | SIGNAL_UNKILLABLE))
> - != SIGNAL_STOP_DEQUEUED) ||
> + if (!likely(sig->flags & SIGNAL_STOP_DEQUEUED) ||

Again, I don't think this minor cleanup is good for -stable.

It doesn't fix any bug, it only removes the unnecessary uglification (which
was previously added by me in fae5fa44f1fd079ffbed8e0add929dd7bbd1347f).

Oleg.