Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83762
b: refs/heads/master
c: 67e465a
h: refs/heads/master
v: v3
  • Loading branch information
Balbir Singh authored and Linus Torvalds committed Feb 7, 2008
1 parent af044f1 commit 29577da
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8a9f3ccd24741b50200c3f33d62534c7271f3dfc
refs/heads/master: 67e465a77ba658635309ee00b367bec6555ea544
35 changes: 35 additions & 0 deletions trunk/mm/memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -326,11 +326,46 @@ static int mem_cgroup_populate(struct cgroup_subsys *ss,
ARRAY_SIZE(mem_cgroup_files));
}

static void mem_cgroup_move_task(struct cgroup_subsys *ss,
struct cgroup *cont,
struct cgroup *old_cont,
struct task_struct *p)
{
struct mm_struct *mm;
struct mem_cgroup *mem, *old_mem;

mm = get_task_mm(p);
if (mm == NULL)
return;

mem = mem_cgroup_from_cont(cont);
old_mem = mem_cgroup_from_cont(old_cont);

if (mem == old_mem)
goto out;

/*
* Only thread group leaders are allowed to migrate, the mm_struct is
* in effect owned by the leader
*/
if (p->tgid != p->pid)
goto out;

css_get(&mem->css);
rcu_assign_pointer(mm->mem_cgroup, mem);
css_put(&old_mem->css);

out:
mmput(mm);
return;
}

struct cgroup_subsys mem_cgroup_subsys = {
.name = "memory",
.subsys_id = mem_cgroup_subsys_id,
.create = mem_cgroup_create,
.destroy = mem_cgroup_destroy,
.populate = mem_cgroup_populate,
.attach = mem_cgroup_move_task,
.early_init = 1,
};

0 comments on commit 29577da

Please sign in to comment.