diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/fork.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 8ca1a14cdc8..8dd8ff28100 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1292,23 +1292,14 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1292 | __ptrace_link(p, current->parent); | 1292 | __ptrace_link(p, current->parent); |
1293 | 1293 | ||
1294 | if (thread_group_leader(p)) { | 1294 | if (thread_group_leader(p)) { |
1295 | if (clone_flags & CLONE_NEWPID) { | 1295 | if (clone_flags & CLONE_NEWPID) |
1296 | p->nsproxy->pid_ns->child_reaper = p; | 1296 | p->nsproxy->pid_ns->child_reaper = p; |
1297 | p->signal->tty = NULL; | ||
1298 | set_task_pgrp(p, p->pid); | ||
1299 | set_task_session(p, p->pid); | ||
1300 | attach_pid(p, PIDTYPE_PGID, pid); | ||
1301 | attach_pid(p, PIDTYPE_SID, pid); | ||
1302 | } else { | ||
1303 | p->signal->tty = current->signal->tty; | ||
1304 | set_task_pgrp(p, task_pgrp_nr(current)); | ||
1305 | set_task_session(p, task_session_nr(current)); | ||
1306 | attach_pid(p, PIDTYPE_PGID, | ||
1307 | task_pgrp(current)); | ||
1308 | attach_pid(p, PIDTYPE_SID, | ||
1309 | task_session(current)); | ||
1310 | } | ||
1311 | 1297 | ||
1298 | p->signal->tty = current->signal->tty; | ||
1299 | set_task_pgrp(p, task_pgrp_nr(current)); | ||
1300 | set_task_session(p, task_session_nr(current)); | ||
1301 | attach_pid(p, PIDTYPE_PGID, task_pgrp(current)); | ||
1302 | attach_pid(p, PIDTYPE_SID, task_session(current)); | ||
1312 | list_add_tail_rcu(&p->tasks, &init_task.tasks); | 1303 | list_add_tail_rcu(&p->tasks, &init_task.tasks); |
1313 | __get_cpu_var(process_counts)++; | 1304 | __get_cpu_var(process_counts)++; |
1314 | } | 1305 | } |