diff options
| -rw-r--r-- | kernel/cpuset.c | 7 | 
1 files changed, 2 insertions, 5 deletions
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 4683fe728c9b..7f384f4013b2 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c @@ -1438,10 +1438,9 @@ static void cpuset_attach(struct cgroup_subsys *ss, struct cgroup *cont,  	struct mm_struct *mm;  	struct cpuset *cs = cgroup_cs(cont);  	struct cpuset *oldcs = cgroup_cs(oldcont); -	NODEMASK_ALLOC(nodemask_t, from, GFP_KERNEL);  	NODEMASK_ALLOC(nodemask_t, to, GFP_KERNEL); -	if (from == NULL || to == NULL) +	if (to == NULL)  		goto alloc_fail;  	if (cs == &top_cpuset) { @@ -1463,18 +1462,16 @@ static void cpuset_attach(struct cgroup_subsys *ss, struct cgroup *cont,  	}  	/* change mm; only needs to be done once even if threadgroup */ -	*from = oldcs->mems_allowed;  	*to = cs->mems_allowed;  	mm = get_task_mm(tsk);  	if (mm) {  		mpol_rebind_mm(mm, to);  		if (is_memory_migrate(cs)) -			cpuset_migrate_mm(mm, from, to); +			cpuset_migrate_mm(mm, &oldcs->mems_allowed, to);  		mmput(mm);  	}  alloc_fail: -	NODEMASK_FREE(from);  	NODEMASK_FREE(to);  }  | 
