]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/slab_common.c
ARM: dts: imx6ul: add flexcan support
[karo-tx-linux.git] / mm / slab_common.c
index b50aef01ccf7ea97aa621dc63cfd66e111ee3dae..8addc3c4df37ecc8923098f793215724559386e9 100644 (file)
@@ -109,8 +109,12 @@ void __kmem_cache_free_bulk(struct kmem_cache *s, size_t nr, void **p)
 {
        size_t i;
 
-       for (i = 0; i < nr; i++)
-               kmem_cache_free(s, p[i]);
+       for (i = 0; i < nr; i++) {
+               if (s)
+                       kmem_cache_free(s, p[i]);
+               else
+                       kfree(p[i]);
+       }
 }
 
 int __kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t nr,
@@ -506,7 +510,7 @@ void memcg_create_kmem_cache(struct mem_cgroup *memcg,
         * The memory cgroup could have been offlined while the cache
         * creation work was pending.
         */
-       if (!memcg_kmem_online(memcg))
+       if (memcg->kmem_state != KMEM_ONLINE)
                goto out_unlock;
 
        idx = memcg_cache_id(memcg);
@@ -693,6 +697,7 @@ static inline int shutdown_memcg_caches(struct kmem_cache *s,
 
 void slab_kmem_cache_release(struct kmem_cache *s)
 {
+       __kmem_cache_release(s);
        destroy_memcg_params(s);
        kfree_const(s->name);
        kmem_cache_free(kmem_cache, s);