Skip to content

Commit 0bdfdd6

Browse files
Matthew Wilcox (Oracle)tehcaster
authored andcommitted
slab: Remove folio references from free_large_kmalloc()
There's no need to use folio APIs here; just use a page directly. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Harry Yoo <harry.yoo@oracle.com> Link: https://patch.msgid.link/20251113000932.1589073-7-willy@infradead.org Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
1 parent f9395bf commit 0bdfdd6

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

mm/slub.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6742,12 +6742,12 @@ void kmem_cache_free(struct kmem_cache *s, void *x)
67426742
}
67436743
EXPORT_SYMBOL(kmem_cache_free);
67446744

6745-
static void free_large_kmalloc(struct folio *folio, void *object)
6745+
static void free_large_kmalloc(struct page *page, void *object)
67466746
{
6747-
unsigned int order = folio_order(folio);
6747+
unsigned int order = compound_order(page);
67486748

6749-
if (WARN_ON_ONCE(!folio_test_large_kmalloc(folio))) {
6750-
dump_page(&folio->page, "Not a kmalloc allocation");
6749+
if (WARN_ON_ONCE(!PageLargeKmalloc(page))) {
6750+
dump_page(page, "Not a kmalloc allocation");
67516751
return;
67526752
}
67536753

@@ -6758,10 +6758,10 @@ static void free_large_kmalloc(struct folio *folio, void *object)
67586758
kasan_kfree_large(object);
67596759
kmsan_kfree_large(object);
67606760

6761-
lruvec_stat_mod_folio(folio, NR_SLAB_UNRECLAIMABLE_B,
6761+
mod_lruvec_page_state(page, NR_SLAB_UNRECLAIMABLE_B,
67626762
-(PAGE_SIZE << order));
6763-
__folio_clear_large_kmalloc(folio);
6764-
free_frozen_pages(&folio->page, order);
6763+
__ClearPageLargeKmalloc(page);
6764+
free_frozen_pages(page, order);
67656765
}
67666766

67676767
/*
@@ -6789,7 +6789,7 @@ void kvfree_rcu_cb(struct rcu_head *head)
67896789
* consider folio order
67906790
*/
67916791
obj = (void *) PAGE_ALIGN_DOWN((unsigned long)obj);
6792-
free_large_kmalloc(folio, obj);
6792+
free_large_kmalloc(&folio->page, obj);
67936793
return;
67946794
}
67956795

@@ -6829,7 +6829,7 @@ void kfree(const void *object)
68296829

68306830
folio = virt_to_folio(object);
68316831
if (unlikely(!folio_test_slab(folio))) {
6832-
free_large_kmalloc(folio, (void *)object);
6832+
free_large_kmalloc(&folio->page, (void *)object);
68336833
return;
68346834
}
68356835

@@ -7253,7 +7253,7 @@ int build_detached_freelist(struct kmem_cache *s, size_t size,
72537253
if (!s) {
72547254
/* Handle kalloc'ed objects */
72557255
if (unlikely(!folio_test_slab(folio))) {
7256-
free_large_kmalloc(folio, object);
7256+
free_large_kmalloc(&folio->page, object);
72577257
df->slab = NULL;
72587258
return size;
72597259
}

0 commit comments

Comments
 (0)