diff options
Diffstat (limited to 'mm/memcontrol.c')
| -rw-r--r-- | mm/memcontrol.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 53b8201b31e..2b552224f5c 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3012,6 +3012,8 @@ void memcg_update_array_size(int num)  		memcg_limited_groups_array_size = memcg_caches_array_size(num);  } +static void kmem_cache_destroy_work_func(struct work_struct *w); +  int memcg_update_cache_size(struct kmem_cache *s, int num_groups)  {  	struct memcg_cache_params *cur_params = s->memcg_params; @@ -3031,6 +3033,8 @@ int memcg_update_cache_size(struct kmem_cache *s, int num_groups)  			return -ENOMEM;  		} +		INIT_WORK(&s->memcg_params->destroy, +				kmem_cache_destroy_work_func);  		s->memcg_params->is_root_cache = true;  		/* @@ -3078,6 +3082,8 @@ int memcg_register_cache(struct mem_cgroup *memcg, struct kmem_cache *s,  	if (!s->memcg_params)  		return -ENOMEM; +	INIT_WORK(&s->memcg_params->destroy, +			kmem_cache_destroy_work_func);  	if (memcg) {  		s->memcg_params->memcg = memcg;  		s->memcg_params->root_cache = root_cache; @@ -3358,8 +3364,6 @@ static void mem_cgroup_destroy_all_caches(struct mem_cgroup *memcg)  	list_for_each_entry(params, &memcg->memcg_slab_caches, list) {  		cachep = memcg_params_to_cache(params);  		cachep->memcg_params->dead = true; -		INIT_WORK(&cachep->memcg_params->destroy, -				  kmem_cache_destroy_work_func);  		schedule_work(&cachep->memcg_params->destroy);  	}  	mutex_unlock(&memcg->slab_caches_mutex);  |