|
@@ -1404,7 +1404,6 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|
|
p->real_start_time = ktime_get_boot_ns();
|
|
|
p->io_context = NULL;
|
|
|
p->audit_context = NULL;
|
|
|
- threadgroup_change_begin(current);
|
|
|
cgroup_fork(p);
|
|
|
#ifdef CONFIG_NUMA
|
|
|
p->mempolicy = mpol_dup(p->mempolicy);
|
|
@@ -1556,6 +1555,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|
|
INIT_LIST_HEAD(&p->thread_group);
|
|
|
p->task_works = NULL;
|
|
|
|
|
|
+ threadgroup_change_begin(current);
|
|
|
/*
|
|
|
* Ensure that the cgroup subsystem policies allow the new process to be
|
|
|
* forked. It should be noted the the new process's css_set can be changed
|
|
@@ -1656,6 +1656,7 @@ static struct task_struct *copy_process(unsigned long clone_flags,
|
|
|
bad_fork_cancel_cgroup:
|
|
|
cgroup_cancel_fork(p);
|
|
|
bad_fork_free_pid:
|
|
|
+ threadgroup_change_end(current);
|
|
|
if (pid != &init_struct_pid)
|
|
|
free_pid(pid);
|
|
|
bad_fork_cleanup_thread:
|
|
@@ -1688,7 +1689,6 @@ bad_fork_cleanup_policy:
|
|
|
mpol_put(p->mempolicy);
|
|
|
bad_fork_cleanup_threadgroup_lock:
|
|
|
#endif
|
|
|
- threadgroup_change_end(current);
|
|
|
delayacct_tsk_free(p);
|
|
|
bad_fork_cleanup_count:
|
|
|
atomic_dec(&p->cred->user->processes);
|