Merge branch 'for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
Pull cgroup changes from Tejun Heo: "Out of the 8 commits, one fixes a long-standing locking issue around tasklist walking and others are cleanups." * 'for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: cgroup: Walk task list under tasklist_lock in cgroup_enable_task_cg_list cgroup: Remove wrong comment on cgroup_enable_task_cg_list() cgroup: remove cgroup_subsys argument from callbacks cgroup: remove extra calls to find_existing_css_set cgroup: replace tasklist_lock with rcu_read_lock cgroup: simplify double-check locking in cgroup_attach_proc cgroup: move struct cgroup_pidlist out from the header file cgroup: remove cgroup_attach_task_current_cg()
This commit is contained in:
@@ -4602,10 +4602,9 @@ static int register_kmem_files(struct cgroup *cont, struct cgroup_subsys *ss)
|
||||
return mem_cgroup_sockets_init(cont, ss);
|
||||
};
|
||||
|
||||
static void kmem_cgroup_destroy(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont)
|
||||
static void kmem_cgroup_destroy(struct cgroup *cont)
|
||||
{
|
||||
mem_cgroup_sockets_destroy(cont, ss);
|
||||
mem_cgroup_sockets_destroy(cont);
|
||||
}
|
||||
#else
|
||||
static int register_kmem_files(struct cgroup *cont, struct cgroup_subsys *ss)
|
||||
@@ -4613,8 +4612,7 @@ static int register_kmem_files(struct cgroup *cont, struct cgroup_subsys *ss)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void kmem_cgroup_destroy(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont)
|
||||
static void kmem_cgroup_destroy(struct cgroup *cont)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
@@ -4927,7 +4925,7 @@ err_cleanup:
|
||||
}
|
||||
|
||||
static struct cgroup_subsys_state * __ref
|
||||
mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont)
|
||||
mem_cgroup_create(struct cgroup *cont)
|
||||
{
|
||||
struct mem_cgroup *memcg, *parent;
|
||||
long error = -ENOMEM;
|
||||
@@ -4989,20 +4987,18 @@ free_out:
|
||||
return ERR_PTR(error);
|
||||
}
|
||||
|
||||
static int mem_cgroup_pre_destroy(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont)
|
||||
static int mem_cgroup_pre_destroy(struct cgroup *cont)
|
||||
{
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
|
||||
|
||||
return mem_cgroup_force_empty(memcg, false);
|
||||
}
|
||||
|
||||
static void mem_cgroup_destroy(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont)
|
||||
static void mem_cgroup_destroy(struct cgroup *cont)
|
||||
{
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
|
||||
|
||||
kmem_cgroup_destroy(ss, cont);
|
||||
kmem_cgroup_destroy(cont);
|
||||
|
||||
mem_cgroup_put(memcg);
|
||||
}
|
||||
@@ -5339,9 +5335,8 @@ static void mem_cgroup_clear_mc(void)
|
||||
mem_cgroup_end_move(from);
|
||||
}
|
||||
|
||||
static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
static int mem_cgroup_can_attach(struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
{
|
||||
struct task_struct *p = cgroup_taskset_first(tset);
|
||||
int ret = 0;
|
||||
@@ -5379,9 +5374,8 @@ static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
static void mem_cgroup_cancel_attach(struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
{
|
||||
mem_cgroup_clear_mc();
|
||||
}
|
||||
@@ -5496,9 +5490,8 @@ retry:
|
||||
up_read(&mm->mmap_sem);
|
||||
}
|
||||
|
||||
static void mem_cgroup_move_task(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont,
|
||||
struct cgroup_taskset *tset)
|
||||
static void mem_cgroup_move_task(struct cgroup *cont,
|
||||
struct cgroup_taskset *tset)
|
||||
{
|
||||
struct task_struct *p = cgroup_taskset_first(tset);
|
||||
struct mm_struct *mm = get_task_mm(p);
|
||||
@@ -5513,20 +5506,17 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss,
|
||||
mem_cgroup_clear_mc();
|
||||
}
|
||||
#else /* !CONFIG_MMU */
|
||||
static int mem_cgroup_can_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
static int mem_cgroup_can_attach(struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static void mem_cgroup_cancel_attach(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
static void mem_cgroup_cancel_attach(struct cgroup *cgroup,
|
||||
struct cgroup_taskset *tset)
|
||||
{
|
||||
}
|
||||
static void mem_cgroup_move_task(struct cgroup_subsys *ss,
|
||||
struct cgroup *cont,
|
||||
struct cgroup_taskset *tset)
|
||||
static void mem_cgroup_move_task(struct cgroup *cont,
|
||||
struct cgroup_taskset *tset)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user