]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
slab: Remove folio references from __do_krealloc()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 13 Nov 2025 00:09:23 +0000 (00:09 +0000)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 13 Nov 2025 10:01:08 +0000 (11:01 +0100)
One slight tweak I made is to calculate 'ks' earlier, which means we
can reuse it in the warning rather than calculating the object size twice.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://patch.msgid.link/20251113000932.1589073-10-willy@infradead.org
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
mm/slub.c

index 0386994c0cb779ea26ae08a6a5e962887364c5ee..d26ebae2a759c0a3f4d1e4e8bacccbd984bc54de 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -6932,16 +6932,16 @@ __do_krealloc(const void *p, size_t new_size, unsigned long align, gfp_t flags,
        if (is_kfence_address(p)) {
                ks = orig_size = kfence_ksize(p);
        } else {
-               struct folio *folio;
+               struct page *page = virt_to_page(p);
+               struct slab *slab = page_slab(page);
 
-               folio = virt_to_folio(p);
-               if (unlikely(!folio_test_slab(folio))) {
+               if (!slab) {
                        /* Big kmalloc object */
-                       WARN_ON(folio_size(folio) <= KMALLOC_MAX_CACHE_SIZE);
-                       WARN_ON(p != folio_address(folio));
-                       ks = folio_size(folio);
+                       ks = page_size(page);
+                       WARN_ON(ks <= KMALLOC_MAX_CACHE_SIZE);
+                       WARN_ON(p != page_address(page));
                } else {
-                       s = folio_slab(folio)->slab_cache;
+                       s = slab->slab_cache;
                        orig_size = get_orig_size(s, (void *)p);
                        ks = s->object_size;
                }