diff options
author | Li Zefan <lizf@cn.fujitsu.com> | 2011-03-23 19:42:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-23 22:46:34 -0400 |
commit | c8163ca8afcac0fc54593fc60d1e1110edbd0eb2 (patch) | |
tree | 55a363ed73b91d8350d2df7083abf49c5c97b20d /kernel | |
parent | 9303e0c4814d2a6afca878cc35433291e862169c (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')
-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, | |||
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 | ||
1476 | alloc_fail: | 1474 | alloc_fail: |
1477 | NODEMASK_FREE(from); | ||
1478 | NODEMASK_FREE(to); | 1475 | NODEMASK_FREE(to); |
1479 | } | 1476 | } |
1480 | 1477 | ||