From: Matthew Wilcox (Oracle) Date: Thu, 13 Nov 2025 00:09:23 +0000 (+0000) Subject: slab: Remove folio references from __do_krealloc() X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5db009dc10b16056ed340a488e948855def63fca;p=thirdparty%2Flinux.git slab: Remove folio references from __do_krealloc() 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) Link: https://patch.msgid.link/20251113000932.1589073-10-willy@infradead.org Reviewed-by: Harry Yoo Signed-off-by: Vlastimil Babka --- diff --git a/mm/slub.c b/mm/slub.c index 0386994c0cb77..d26ebae2a759c 100644 --- 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; }