mm/slub: Simplify __kmem_cache_alias()
authorXiongwei Song <xiongwei.song@windriver.com>
Tue, 31 May 2022 00:55:50 +0000 (08:55 +0800)
committerVlastimil Babka <vbabka@suse.cz>
Mon, 4 Jul 2022 15:08:47 +0000 (17:08 +0200)
There is no need to do anything if sysfs_slab_alias() return nonzero
value after getting a mergeable cache.

Signed-off-by: Xiongwei Song <xiongwei.song@windriver.com>
Reviewed-by: Muchun Song <songmuchun@bytedance.com>
Link: https://lore.kernel.org/all/e5ebc952-af17-321f-5343-bc914d47c931@suse.cz/
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slub.c

index b1281b8..c21edf5 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4890,6 +4890,9 @@ __kmem_cache_alias(const char *name, unsigned int size, unsigned int align,
 
        s = find_mergeable(size, align, flags, name, ctor);
        if (s) {
+               if (sysfs_slab_alias(s, name))
+                       return NULL;
+
                s->refcount++;
 
                /*
@@ -4898,11 +4901,6 @@ __kmem_cache_alias(const char *name, unsigned int size, unsigned int align,
                 */
                s->object_size = max(s->object_size, size);
                s->inuse = max(s->inuse, ALIGN(size, sizeof(void *)));
-
-               if (sysfs_slab_alias(s, name)) {
-                       s->refcount--;
-                       s = NULL;
-               }
        }
 
        return s;