cpuset: remove unneeded NODEMASK_ALLOC() in cpuset_attach()
Li Zefan [Wed, 23 Mar 2011 23:42:46 +0000 (16:42 -0700)]
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>

kernel/cpuset.c

index 4683fe7..7f384f4 100644 (file)
@@ -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);
 }