|
@@ -1039,8 +1039,6 @@ static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
|
|
|
atomic_set(&sig->live, 1);
|
|
|
atomic_set(&sig->sigcnt, 1);
|
|
|
init_waitqueue_head(&sig->wait_chldexit);
|
|
|
- if (clone_flags & CLONE_NEWPID)
|
|
|
- sig->flags |= SIGNAL_UNKILLABLE;
|
|
|
sig->curr_target = tsk;
|
|
|
init_sigpending(&sig->shared_pending);
|
|
|
INIT_LIST_HEAD(&sig->posix_timers);
|
|
@@ -1441,8 +1439,10 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|
|
ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);
|
|
|
|
|
|
if (thread_group_leader(p)) {
|
|
|
- if (is_child_reaper(pid))
|
|
|
+ if (is_child_reaper(pid)) {
|
|
|
ns_of_pid(pid)->child_reaper = p;
|
|
|
+ p->signal->flags |= SIGNAL_UNKILLABLE;
|
|
|
+ }
|
|
|
|
|
|
p->signal->leader_pid = pid;
|
|
|
p->signal->tty = tty_kref_get(current->signal->tty);
|