aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/signal.c')
-rw-r--r--kernel/signal.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/signal.c b/kernel/signal.c
index 1d905ec74bde..9d1512dcf176 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1108,8 +1108,8 @@ void zap_other_threads(struct task_struct *p)
1108 if (t != p->group_leader) 1108 if (t != p->group_leader)
1109 t->exit_signal = -1; 1109 t->exit_signal = -1;
1110 1110
1111 /* SIGKILL will be handled before any pending SIGSTOP */
1111 sigaddset(&t->pending.signal, SIGKILL); 1112 sigaddset(&t->pending.signal, SIGKILL);
1112 rm_from_queue(SIG_KERNEL_STOP_MASK, &t->pending);
1113 signal_wake_up(t, 1); 1113 signal_wake_up(t, 1);
1114 } 1114 }
1115} 1115}
@@ -1879,9 +1879,9 @@ relock:
1879 /* Let the debugger run. */ 1879 /* Let the debugger run. */
1880 ptrace_stop(signr, signr, info); 1880 ptrace_stop(signr, signr, info);
1881 1881
1882 /* We're back. Did the debugger cancel the sig? */ 1882 /* We're back. Did the debugger cancel the sig or group_exit? */
1883 signr = current->exit_code; 1883 signr = current->exit_code;
1884 if (signr == 0) 1884 if (signr == 0 || current->signal->flags & SIGNAL_GROUP_EXIT)
1885 continue; 1885 continue;
1886 1886
1887 current->exit_code = 0; 1887 current->exit_code = 0;