Commit 4a2c2110 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Vlastimil Babka
Browse files

slab: Remove folio references from build_detached_freelist()



Use pages and slabs directly instead of converting to folios.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Link: https://patch.msgid.link/20251113000932.1589073-11-willy@infradead.org


Reviewed-by: default avatarHarry Yoo <harry.yoo@oracle.com>
Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
parent 5db009dc
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -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 */
	}