kernel/signal.c: change do_signal_stop/do_sigaction to use while_each_thread()

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>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Kees Cook <keescook@chromium.org>
Reviewed-by: Sameer Nanda <snanda@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Oleg Nesterov 2014-01-23 15:55:56 -08:00 committed by Linus Torvalds
parent 2e1f383582
commit 8d38f203b4

View File

@ -2047,8 +2047,8 @@ static bool do_signal_stop(int signr)
if (task_set_jobctl_pending(current, signr | gstop)) if (task_set_jobctl_pending(current, signr | gstop))
sig->group_stop_count++; sig->group_stop_count++;
for (t = next_thread(current); t != current; t = current;
t = next_thread(t)) { while_each_thread(current, t) {
/* /*
* Setting state to TASK_STOPPED for a group * Setting state to TASK_STOPPED for a group
* stop is always done with the siglock held, * 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); rm_from_queue_full(&mask, &t->signal->shared_pending);
do { do {
rm_from_queue_full(&mask, &t->pending); rm_from_queue_full(&mask, &t->pending);
t = next_thread(t); } while_each_thread(current, t);
} while (t != current);
} }
} }