s->refcount--;
if (!s->refcount) {
list_del(&s->list);
+ memcg_unregister_cache(s);
if (!__kmem_cache_shutdown(s)) {
- memcg_unregister_cache(s);
mutex_unlock(&slab_mutex);
if (s->flags & SLAB_DESTROY_BY_RCU)
rcu_barrier();
kmem_cache_free(kmem_cache, s);
} else {
list_add(&s->list, &slab_caches);
+ memcg_register_cache(s);
mutex_unlock(&slab_mutex);
printk(KERN_ERR "kmem_cache_destroy %s: Slab cache still has objects\n",
s->name);