mirror of https://github.com/torvalds/linux.git
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:
parent
0bdfdd6a05
commit
f262cfd75d
14
mm/slub.c
14
mm/slub.c
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue