diff --git a/kernel/signal.c b/kernel/signal.c index 5a274705ba1945b8ec81100a139daec057fc696d..619b027e92b53ce02706a04f6e4524a6cc1135a8 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -1763,7 +1763,8 @@ do_signal_stop(int signr) * stop is always done with the siglock held, * so this check has no races. */ - if (t->state < TASK_STOPPED) { + if (!t->exit_state && + !(t->state & (TASK_STOPPED|TASK_TRACED))) { stop_count++; signal_wake_up(t, 0); }