|
@@ -1446,14 +1446,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|
|
goto bad_fork_free_pid;
|
|
|
}
|
|
|
|
|
|
- if (clone_flags & CLONE_THREAD) {
|
|
|
- current->signal->nr_threads++;
|
|
|
- atomic_inc(¤t->signal->live);
|
|
|
- atomic_inc(¤t->signal->sigcnt);
|
|
|
- p->group_leader = current->group_leader;
|
|
|
- list_add_tail_rcu(&p->thread_group, &p->group_leader->thread_group);
|
|
|
- }
|
|
|
-
|
|
|
if (likely(p->pid)) {
|
|
|
ptrace_init_task(p, (clone_flags & CLONE_PTRACE) || trace);
|
|
|
|
|
@@ -1470,6 +1462,13 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|
|
list_add_tail(&p->sibling, &p->real_parent->children);
|
|
|
list_add_tail_rcu(&p->tasks, &init_task.tasks);
|
|
|
__this_cpu_inc(process_counts);
|
|
|
+ } else {
|
|
|
+ current->signal->nr_threads++;
|
|
|
+ atomic_inc(¤t->signal->live);
|
|
|
+ atomic_inc(¤t->signal->sigcnt);
|
|
|
+ p->group_leader = current->group_leader;
|
|
|
+ list_add_tail_rcu(&p->thread_group,
|
|
|
+ &p->group_leader->thread_group);
|
|
|
}
|
|
|
attach_pid(p, PIDTYPE_PID, pid);
|
|
|
nr_threads++;
|