Re: [PATCHv6 17/17] mm/slab: Use compound_head() in page_slab()

David Hildenbrand (Arm)
2026-02-06T10:42:18Z

On 2/2/26 16:56, Kiryl Shutsemau wrote:
> 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@kernel.org>
>
> ---
>
> I am not sure if this open-coded version is intentional and required for
> memdesc transition. Drop the patch if it is.

commit 2bcd3800f2da1be13b972858f63c66d035b1ec6d
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date: Thu Nov 13 00:09:15 2025 +0000

slab: Reimplement page_slab()

In order to separate slabs from folios, we need to convert from any page
in a slab to the slab directly without going through a page to folio
conversion first.

Up to this point, page_slab() has followed the example of other memdesc
converters (page_folio(), page_ptdesc() etc) and just cast the pointer
to the requested type, regardless of whether the pointer is actually a
pointer to the correct type or not.

That changes with this commit; we check that the page actually belongs
to a slab and return NULL if it does not. Other memdesc converters will
adopt this convention in future.

I think using compound_head() is fine. For memdescs the function has to be changed to
lookup the memdesc either way, and not go through the head page.

Acked-by: David Hildenbrand (Arm) <david@kernel.org>

--
Cheers,

David