Re: [PATCH 3/3] signals: change do_signal_stop/do_sigaction to use while_each_thread()

Sameer Nanda
2013-11-22T20:17:40Z

On Fri, Nov 22, 2013 at 11:18 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> Change do_signal_stop() and do_sigaction() to avoid next_thread()
> and use while_each_thread() instead.
>
> Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Sameer Nanda <snanda@chromium.org>

> ---
> kernel/signal.c | 7 +++----
> 1 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/signal.c b/kernel/signal.c
> index ded28b9..086071d 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -2047,8 +2047,8 @@ static bool do_signal_stop(int signr)
> if (task_set_jobctl_pending(current, signr | gstop))
> sig->group_stop_count++;
>
> - for (t = next_thread(current); t != current;
> - t = next_thread(t)) {
> + t = current;
> + while_each_thread(current, t) {
> /*
> * Setting state to TASK_STOPPED for a group
> * stop is always done with the siglock held,
> @@ -3125,8 +3125,7 @@ int do_sigaction(int sig, struct k_sigaction *act, struct k_sigaction *oact)
> rm_from_queue_full(&mask, &t->signal->shared_pending);
> do {
> rm_from_queue_full(&mask, &t->pending);
> - t = next_thread(t);
> - } while (t != current);
> + } while_each_thread(current, t);
> }
> }
>
> --
> 1.5.5.1
>

--
Sameer