slab: Remove folio references from build_detached_freelist()

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>
This commit is contained in:
Matthew Wilcox (Oracle)
2025-11-13 00:09:24 +00:00
committed by Vlastimil Babka
parent 5db009dc10
commit 4a2c2110a3

View File

@@ -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 */
}