Merge branch 'akpm' (patches from Andrew)
[sfrench/cifs-2.6.git] / mm / slab_common.c
index dc15566141d4447bda26128a9a0158c5128ee081..23f2ab0713b7748accfb7c1154f1f93b412be67c 100644 (file)
@@ -489,9 +489,7 @@ void slab_kmem_cache_release(struct kmem_cache *s)
 
 void kmem_cache_destroy(struct kmem_cache *s)
 {
-       int err;
-
-       if (unlikely(!s))
+       if (unlikely(!s) || !kasan_check_byte(s))
                return;
 
        cpus_read_lock();
@@ -501,12 +499,9 @@ void kmem_cache_destroy(struct kmem_cache *s)
        if (s->refcount)
                goto out_unlock;
 
-       err = shutdown_cache(s);
-       if (err) {
-               pr_err("%s %s: Slab cache still has objects\n",
-                      __func__, s->name);
-               dump_stack();
-       }
+       WARN(shutdown_cache(s),
+            "%s %s: Slab cache still has objects when called from %pS",
+            __func__, s->name, (void *)_RET_IP_);
 out_unlock:
        mutex_unlock(&slab_mutex);
        cpus_read_unlock();
@@ -824,7 +819,7 @@ void __init setup_kmalloc_cache_index_table(void)
 
        if (KMALLOC_MIN_SIZE >= 64) {
                /*
-                * The 96 byte size cache is not used if the alignment
+                * The 96 byte sized cache is not used if the alignment
                 * is 64 byte.
                 */
                for (i = 64 + 8; i <= 96; i += 8)
@@ -849,7 +844,7 @@ new_kmalloc_cache(int idx, enum kmalloc_cache_type type, slab_flags_t flags)
        if (type == KMALLOC_RECLAIM) {
                flags |= SLAB_RECLAIM_ACCOUNT;
        } else if (IS_ENABLED(CONFIG_MEMCG_KMEM) && (type == KMALLOC_CGROUP)) {
-               if (cgroup_memory_nokmem) {
+               if (mem_cgroup_kmem_disabled()) {
                        kmalloc_caches[type][idx] = kmalloc_caches[KMALLOC_NORMAL][idx];
                        return;
                }
@@ -1044,18 +1039,18 @@ static void print_slabinfo_header(struct seq_file *m)
        seq_putc(m, '\n');
 }
 
-void *slab_start(struct seq_file *m, loff_t *pos)
+static void *slab_start(struct seq_file *m, loff_t *pos)
 {
        mutex_lock(&slab_mutex);
        return seq_list_start(&slab_caches, *pos);
 }
 
-void *slab_next(struct seq_file *m, void *p, loff_t *pos)
+static void *slab_next(struct seq_file *m, void *p, loff_t *pos)
 {
        return seq_list_next(p, &slab_caches, pos);
 }
 
-void slab_stop(struct seq_file *m, void *p)
+static void slab_stop(struct seq_file *m, void *p)
 {
        mutex_unlock(&slab_mutex);
 }
@@ -1123,17 +1118,6 @@ void dump_unreclaimable_slab(void)
        mutex_unlock(&slab_mutex);
 }
 
-#if defined(CONFIG_MEMCG_KMEM)
-int memcg_slab_show(struct seq_file *m, void *p)
-{
-       /*
-        * Deprecated.
-        * Please, take a look at tools/cgroup/slabinfo.py .
-        */
-       return 0;
-}
-#endif
-
 /*
  * slabinfo_op - iterator that generates /proc/slabinfo
  *