aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/cpuset.c
diff options
context:
space:
mode:
authorLi Zefan <lizf@cn.fujitsu.com>2011-03-23 19:42:46 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-23 22:46:34 -0400
commitc8163ca8afcac0fc54593fc60d1e1110edbd0eb2 (patch)
tree55a363ed73b91d8350d2df7083abf49c5c97b20d /kernel/cpuset.c
parent9303e0c4814d2a6afca878cc35433291e862169c (diff)
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>
Diffstat (limited to 'kernel/cpuset.c')
-rw-r--r--kernel/cpuset.c7
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,
1438 struct mm_struct *mm; 1438 struct mm_struct *mm;
1439 struct cpuset *cs = cgroup_cs(cont); 1439 struct cpuset *cs = cgroup_cs(cont);
1440 struct cpuset *oldcs = cgroup_cs(oldcont); 1440 struct cpuset *oldcs = cgroup_cs(oldcont);
1441 NODEMASK_ALLOC(nodemask_t, from, GFP_KERNEL);
1442 NODEMASK_ALLOC(nodemask_t, to, GFP_KERNEL); 1441 NODEMASK_ALLOC(nodemask_t, to, GFP_KERNEL);
1443 1442
1444 if (from == NULL || to == NULL) 1443 if (to == NULL)
1445 goto alloc_fail; 1444 goto alloc_fail;
1446 1445
1447 if (cs == &top_cpuset) { 1446 if (cs == &top_cpuset) {
@@ -1463,18 +1462,16 @@ static void cpuset_attach(struct cgroup_subsys *ss, struct cgroup *cont,
1463 } 1462 }
1464 1463
1465 /* change mm; only needs to be done once even if threadgroup */ 1464 /* change mm; only needs to be done once even if threadgroup */
1466 *from = oldcs->mems_allowed;
1467 *to = cs->mems_allowed; 1465 *to = cs->mems_allowed;
1468 mm = get_task_mm(tsk); 1466 mm = get_task_mm(tsk);
1469 if (mm) { 1467 if (mm) {
1470 mpol_rebind_mm(mm, to); 1468 mpol_rebind_mm(mm, to);
1471 if (is_memory_migrate(cs)) 1469 if (is_memory_migrate(cs))
1472 cpuset_migrate_mm(mm, from, to); 1470 cpuset_migrate_mm(mm, &oldcs->mems_allowed, to);
1473 mmput(mm); 1471 mmput(mm);
1474 } 1472 }
1475 1473
1476alloc_fail: 1474alloc_fail:
1477 NODEMASK_FREE(from);
1478 NODEMASK_FREE(to); 1475 NODEMASK_FREE(to);
1479} 1476}
1480 1477