[PATCHv7 18/18] mm/slab: Use compound_head() in page_slab()
From: Kiryl Shutsemau (Meta)
Date: Fri Feb 27 2026 - 14:34:09 EST
From: Kiryl Shutsemau <kas@xxxxxxxxxx>
page_slab() contained an open-coded implementation of compound_head().
Replace the duplicated code with a direct call to compound_head().
Signed-off-by: Kiryl Shutsemau <kas@xxxxxxxxxx>
Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>
Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx>
---
mm/slab.h | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/mm/slab.h b/mm/slab.h
index 1a1b3758df05..7d3b929019ae 100644
--- a/mm/slab.h
+++ b/mm/slab.h
@@ -131,19 +131,7 @@ static_assert(IS_ALIGNED(offsetof(struct slab, freelist), sizeof(struct freelist
*/
static inline struct slab *page_slab(const struct page *page)
{
- unsigned long info;
-
- info = READ_ONCE(page->compound_info);
- if (info & 1) {
- /* See compound_head() */
- if (compound_info_has_mask()) {
- unsigned long p = (unsigned long)page;
- page = (struct page *)(p & info);
- } else {
- page = (struct page *)(info - 1);
- }
- }
-
+ page = compound_head(page);
if (data_race(page->page_type >> 24) != PGTY_slab)
page = NULL;
--
2.51.2