]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
slab: Remove folio references from build_detached_freelist()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 13 Nov 2025 00:09:24 +0000 (00:09 +0000)
committerVlastimil Babka <vbabka@suse.cz>
Thu, 13 Nov 2025 10:01:08 +0000 (11:01 +0100)
Use pages and slabs directly instead of converting to folios.

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

index d26ebae2a759c0a3f4d1e4e8bacccbd984bc54de..3ada9421c65dd7e05b398fa488f6c9ea0ff06842 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -7245,23 +7245,25 @@ int build_detached_freelist(struct kmem_cache *s, size_t size,
 {
        int lookahead = 3;
        void *object;
-       struct folio *folio;
+       struct page *page;
+       struct slab *slab;
        size_t same;
 
        object = p[--size];
-       folio = virt_to_folio(object);
+       page = virt_to_page(object);
+       slab = page_slab(page);
        if (!s) {
                /* Handle kalloc'ed objects */
-               if (unlikely(!folio_test_slab(folio))) {
-                       free_large_kmalloc(&folio->page, object);
+               if (!slab) {
+                       free_large_kmalloc(page, object);
                        df->slab = NULL;
                        return size;
                }
                /* Derive kmem_cache from object */
-               df->slab = folio_slab(folio);
-               df->s = df->slab->slab_cache;
+               df->slab = slab;
+               df->s = slab->slab_cache;
        } else {
-               df->slab = folio_slab(folio);
+               df->slab = slab;
                df->s = cache_from_obj(s, object); /* Support for memcg */
        }