diff options
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 7fe3adfa65cb..7992ee759d89 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -972,12 +972,13 @@ static task_t *copy_process(unsigned long clone_flags, | |||
972 | p->io_context = NULL; | 972 | p->io_context = NULL; |
973 | p->io_wait = NULL; | 973 | p->io_wait = NULL; |
974 | p->audit_context = NULL; | 974 | p->audit_context = NULL; |
975 | cpuset_fork(p); | ||
975 | #ifdef CONFIG_NUMA | 976 | #ifdef CONFIG_NUMA |
976 | p->mempolicy = mpol_copy(p->mempolicy); | 977 | p->mempolicy = mpol_copy(p->mempolicy); |
977 | if (IS_ERR(p->mempolicy)) { | 978 | if (IS_ERR(p->mempolicy)) { |
978 | retval = PTR_ERR(p->mempolicy); | 979 | retval = PTR_ERR(p->mempolicy); |
979 | p->mempolicy = NULL; | 980 | p->mempolicy = NULL; |
980 | goto bad_fork_cleanup; | 981 | goto bad_fork_cleanup_cpuset; |
981 | } | 982 | } |
982 | #endif | 983 | #endif |
983 | 984 | ||
@@ -1148,7 +1149,6 @@ static task_t *copy_process(unsigned long clone_flags, | |||
1148 | total_forks++; | 1149 | total_forks++; |
1149 | write_unlock_irq(&tasklist_lock); | 1150 | write_unlock_irq(&tasklist_lock); |
1150 | proc_fork_connector(p); | 1151 | proc_fork_connector(p); |
1151 | cpuset_fork(p); | ||
1152 | retval = 0; | 1152 | retval = 0; |
1153 | 1153 | ||
1154 | fork_out: | 1154 | fork_out: |
@@ -1180,7 +1180,9 @@ bad_fork_cleanup_security: | |||
1180 | bad_fork_cleanup_policy: | 1180 | bad_fork_cleanup_policy: |
1181 | #ifdef CONFIG_NUMA | 1181 | #ifdef CONFIG_NUMA |
1182 | mpol_free(p->mempolicy); | 1182 | mpol_free(p->mempolicy); |
1183 | bad_fork_cleanup_cpuset: | ||
1183 | #endif | 1184 | #endif |
1185 | cpuset_exit(p); | ||
1184 | bad_fork_cleanup: | 1186 | bad_fork_cleanup: |
1185 | if (p->binfmt) | 1187 | if (p->binfmt) |
1186 | module_put(p->binfmt->module); | 1188 | module_put(p->binfmt->module); |