slab: Remove folio references from kvfree_rcu_cb()

Remove conversions from folio to page and folio to slab.  This is
preparation for separately allocated struct slab from struct page.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://patch.msgid.link/20251113000932.1589073-8-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:21 +00:00 committed by Vlastimil Babka
parent 0bdfdd6a05
commit f262cfd75d
1 changed files with 7 additions and 7 deletions

View File

@ -6771,7 +6771,7 @@ static void free_large_kmalloc(struct page *page, void *object)
void kvfree_rcu_cb(struct rcu_head *head) void kvfree_rcu_cb(struct rcu_head *head)
{ {
void *obj = head; void *obj = head;
struct folio *folio; struct page *page;
struct slab *slab; struct slab *slab;
struct kmem_cache *s; struct kmem_cache *s;
void *slab_addr; void *slab_addr;
@ -6782,20 +6782,20 @@ void kvfree_rcu_cb(struct rcu_head *head)
return; return;
} }
folio = virt_to_folio(obj); page = virt_to_page(obj);
if (!folio_test_slab(folio)) { slab = page_slab(page);
if (!slab) {
/* /*
* rcu_head offset can be only less than page size so no need to * rcu_head offset can be only less than page size so no need to
* consider folio order * consider allocation order
*/ */
obj = (void *) PAGE_ALIGN_DOWN((unsigned long)obj); obj = (void *) PAGE_ALIGN_DOWN((unsigned long)obj);
free_large_kmalloc(&folio->page, obj); free_large_kmalloc(page, obj);
return; return;
} }
slab = folio_slab(folio);
s = slab->slab_cache; s = slab->slab_cache;
slab_addr = folio_address(folio); slab_addr = slab_address(slab);
if (is_kfence_address(obj)) { if (is_kfence_address(obj)) {
obj = kfence_object_start(obj); obj = kfence_object_start(obj);