mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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:
committed by
Vlastimil Babka
parent
5db009dc10
commit
4a2c2110a3
16
mm/slub.c
16
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 */
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user