diff options
author | Oleg Nesterov <oleg@redhat.com> | 2011-04-01 14:12:16 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2011-04-03 20:11:04 -0400 |
commit | 780006eac2fe7f4d2582da16a096e5a44c4767ff (patch) | |
tree | 13d315029abead58b8b88071c7177271824b211a /kernel | |
parent | 1deac632fc3dcff33a6df3e82ef10c738ac13fe6 (diff) |
signal: do_signal_stop: Remove the unneeded task_clear_group_stop_pending()
PF_EXITING or TASK_STOPPED has already called task_participate_group_stop()
and cleared its ->group_stop. No need to do task_clear_group_stop_pending()
when we start the new group stop.
Add a small comment to explain the !task_is_stopped() check. Note that this
check is not exactly right and it can lead to unnecessary stop later if the
thread is TASK_PTRACED. What we need is task_participated_in_group_stop(),
this will be solved later.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/signal.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 38ea9e2f1831..e9abc69dc0d8 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -1866,7 +1866,8 @@ static int do_signal_stop(int signr) | |||
1866 | * still in effect and then receive a stop signal and | 1866 | * still in effect and then receive a stop signal and |
1867 | * initiate another group stop. This deviates from the | 1867 | * initiate another group stop. This deviates from the |
1868 | * usual behavior as two consecutive stop signals can't | 1868 | * usual behavior as two consecutive stop signals can't |
1869 | * cause two group stops when !ptraced. | 1869 | * cause two group stops when !ptraced. That is why we |
1870 | * also check !task_is_stopped(t) below. | ||
1870 | * | 1871 | * |
1871 | * The condition can be distinguished by testing whether | 1872 | * The condition can be distinguished by testing whether |
1872 | * SIGNAL_STOP_STOPPED is already set. Don't generate | 1873 | * SIGNAL_STOP_STOPPED is already set. Don't generate |
@@ -1896,8 +1897,6 @@ static int do_signal_stop(int signr) | |||
1896 | t->group_stop |= signr | gstop; | 1897 | t->group_stop |= signr | gstop; |
1897 | sig->group_stop_count++; | 1898 | sig->group_stop_count++; |
1898 | signal_wake_up(t, 0); | 1899 | signal_wake_up(t, 0); |
1899 | } else { | ||
1900 | task_clear_group_stop_pending(t); | ||
1901 | } | 1900 | } |
1902 | } | 1901 | } |
1903 | } | 1902 | } |