]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm/slab: Optimize the code logic in find_mergeable()
authorXavier <xavier_qy@163.com>
Wed, 4 Sep 2024 07:40:37 +0000 (15:40 +0800)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 5 Sep 2024 12:42:23 +0000 (14:42 +0200)
We can first assess the flags, if it's unmergeable, there's no need
to calculate the size and align.

Signed-off-by: Xavier <xavier_qy@163.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slab_common.c

index ca694f5553b4e0138e2b8ecf5373711c107de913..85afeb69b3c07156daae821a0feaef2daa84a3fc 100644 (file)
@@ -186,14 +186,15 @@ struct kmem_cache *find_mergeable(unsigned int size, unsigned int align,
        if (ctor)
                return NULL;
 
-       size = ALIGN(size, sizeof(void *));
-       align = calculate_alignment(flags, align, size);
-       size = ALIGN(size, align);
        flags = kmem_cache_flags(flags, name);
 
        if (flags & SLAB_NEVER_MERGE)
                return NULL;
 
+       size = ALIGN(size, sizeof(void *));
+       align = calculate_alignment(flags, align, size);
+       size = ALIGN(size, align);
+
        list_for_each_entry_reverse(s, &slab_caches, list) {
                if (slab_unmergeable(s))
                        continue;