]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm/sl[au]b: use own bulk free function when bulk alloc failed
authorHyeonggon Yoo <42.hyeyoo@gmail.com>
Tue, 14 Jun 2022 15:26:34 +0000 (00:26 +0900)
committerVlastimil Babka <vbabka@suse.cz>
Wed, 20 Jul 2022 11:30:11 +0000 (13:30 +0200)
There is no benefit to call generic bulk free function when
kmem_cache_alloc_bulk() failed. Use own kmem_cache_free_bulk()
instead of generic function.

Note that if kmem_cache_alloc_bulk() fails to allocate first object in
SLUB, size is zero. So allow passing size == 0 to kmem_cache_free_bulk()
like SLAB's.

Signed-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slab.c
mm/slub.c

index 764cbadba69c2946e25e1ccf44d9eb28b97c3162..5e73e2d802223e35de72985304a18c1f5e628ddf 100644 (file)
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3553,7 +3553,7 @@ error:
        local_irq_enable();
        cache_alloc_debugcheck_after_bulk(s, flags, i, p, _RET_IP_);
        slab_post_alloc_hook(s, objcg, flags, i, p, false);
-       __kmem_cache_free_bulk(s, i, p);
+       kmem_cache_free_bulk(s, i, p);
        return 0;
 }
 EXPORT_SYMBOL(kmem_cache_alloc_bulk);
index 26b00951aad15bdbab74812e0c26cf1211a1bff8..862dbd9af4f521fe820a9b5bdb69e7a726ba3d5d 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3647,7 +3647,7 @@ int build_detached_freelist(struct kmem_cache *s, size_t size,
 /* Note that interrupts must be enabled when calling this function. */
 void kmem_cache_free_bulk(struct kmem_cache *s, size_t size, void **p)
 {
-       if (WARN_ON(!size))
+       if (!size)
                return;
 
        do {
@@ -3738,7 +3738,7 @@ int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size,
 error:
        slub_put_cpu_ptr(s->cpu_slab);
        slab_post_alloc_hook(s, objcg, flags, i, p, false);
-       __kmem_cache_free_bulk(s, i, p);
+       kmem_cache_free_bulk(s, i, p);
        return 0;
 }
 EXPORT_SYMBOL(kmem_cache_alloc_bulk);