cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_attach()

oldcs->mems_allowed is not modified during cpuset_attach(), so we don't
have to copy it to a buffer allocated by NODEMASK_ALLOC().  Just pass it
to cpuset_migrate_mm().

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Paul Menage <menage@google.com>
Acked-by: David Rientjes <rientjes@google.com>
Cc: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Li Zefan 2011-03-23 16:42:46 -07:00 committed by Linus Torvalds
parent 9303e0c481
commit c8163ca8af

View File

@ -1438,10 +1438,9 @@ static void cpuset_attach(struct cgroup_subsys *ss, struct cgroup *cont,
struct mm_struct *mm; struct mm_struct *mm;
struct cpuset *cs = cgroup_cs(cont); struct cpuset *cs = cgroup_cs(cont);
struct cpuset *oldcs = cgroup_cs(oldcont); struct cpuset *oldcs = cgroup_cs(oldcont);
NODEMASK_ALLOC(nodemask_t, from, GFP_KERNEL);
NODEMASK_ALLOC(nodemask_t, to, GFP_KERNEL); NODEMASK_ALLOC(nodemask_t, to, GFP_KERNEL);
if (from == NULL || to == NULL) if (to == NULL)
goto alloc_fail; goto alloc_fail;
if (cs == &top_cpuset) { 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 */ /* change mm; only needs to be done once even if threadgroup */
*from = oldcs->mems_allowed;
*to = cs->mems_allowed; *to = cs->mems_allowed;
mm = get_task_mm(tsk); mm = get_task_mm(tsk);
if (mm) { if (mm) {
mpol_rebind_mm(mm, to); mpol_rebind_mm(mm, to);
if (is_memory_migrate(cs)) if (is_memory_migrate(cs))
cpuset_migrate_mm(mm, from, to); cpuset_migrate_mm(mm, &oldcs->mems_allowed, to);
mmput(mm); mmput(mm);
} }
alloc_fail: alloc_fail:
NODEMASK_FREE(from);
NODEMASK_FREE(to); NODEMASK_FREE(to);
} }