From: Xavier Date: Wed, 4 Sep 2024 07:40:37 +0000 (+0800) Subject: mm/slab: Optimize the code logic in find_mergeable() X-Git-Tag: v6.12-rc1~162^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e02147cb703412fa13dd31908c734d7fb2314f55;p=thirdparty%2Fkernel%2Flinux.git mm/slab: Optimize the code logic in find_mergeable() We can first assess the flags, if it's unmergeable, there's no need to calculate the size and align. Signed-off-by: Xavier Signed-off-by: Vlastimil Babka --- diff --git a/mm/slab_common.c b/mm/slab_common.c index ca694f5553b4e..85afeb69b3c07 100644 --- a/mm/slab_common.c +++ b/mm/slab_common.c @@ -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;