]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
slab: Remove folio references from kfree()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 13 Nov 2025 00:09:22 +0000 (00:09 +0000)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 13 Nov 2025 10:01:08 +0000 (11:01 +0100)
This should generate identical code to the previous version, but
without any dependency on how folios work.

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

index 56c7ddff43fae26313434da38269625ba8e1991f..0386994c0cb779ea26ae08a6a5e962887364c5ee 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -6817,7 +6817,7 @@ void kvfree_rcu_cb(struct rcu_head *head)
  */
 void kfree(const void *object)
 {
-       struct folio *folio;
+       struct page *page;
        struct slab *slab;
        struct kmem_cache *s;
        void *x = (void *)object;
@@ -6827,13 +6827,13 @@ void kfree(const void *object)
        if (unlikely(ZERO_OR_NULL_PTR(object)))
                return;
 
-       folio = virt_to_folio(object);
-       if (unlikely(!folio_test_slab(folio))) {
-               free_large_kmalloc(&folio->page, (void *)object);
+       page = virt_to_page(object);
+       slab = page_slab(page);
+       if (!slab) {
+               free_large_kmalloc(page, (void *)object);
                return;
        }
 
-       slab = folio_slab(folio);
        s = slab->slab_cache;
        slab_free(s, slab, x, _RET_IP_);
 }