|
@@ -3242,7 +3242,7 @@ void memcg_release_cache(struct kmem_cache *s)
|
|
|
list_del(&s->memcg_params->list);
|
|
|
mutex_unlock(&memcg->slab_caches_mutex);
|
|
|
|
|
|
- mem_cgroup_put(memcg);
|
|
|
+ css_put(&memcg->css);
|
|
|
out:
|
|
|
kfree(s->memcg_params);
|
|
|
}
|
|
@@ -3402,16 +3402,18 @@ static struct kmem_cache *memcg_create_kmem_cache(struct mem_cgroup *memcg,
|
|
|
|
|
|
mutex_lock(&memcg_cache_mutex);
|
|
|
new_cachep = cachep->memcg_params->memcg_caches[idx];
|
|
|
- if (new_cachep)
|
|
|
+ if (new_cachep) {
|
|
|
+ css_put(&memcg->css);
|
|
|
goto out;
|
|
|
+ }
|
|
|
|
|
|
new_cachep = kmem_cache_dup(memcg, cachep);
|
|
|
if (new_cachep == NULL) {
|
|
|
new_cachep = cachep;
|
|
|
+ css_put(&memcg->css);
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- mem_cgroup_get(memcg);
|
|
|
atomic_set(&new_cachep->memcg_params->nr_pages , 0);
|
|
|
|
|
|
cachep->memcg_params->memcg_caches[idx] = new_cachep;
|
|
@@ -3499,8 +3501,6 @@ static void memcg_create_cache_work_func(struct work_struct *w)
|
|
|
|
|
|
cw = container_of(w, struct create_work, work);
|
|
|
memcg_create_kmem_cache(cw->memcg, cw->cachep);
|
|
|
- /* Drop the reference gotten when we enqueued. */
|
|
|
- css_put(&cw->memcg->css);
|
|
|
kfree(cw);
|
|
|
}
|
|
|
|