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

Vlastimil Babka vbabka at suse.cz
Tue Feb 10 08:45:13 PST 2026


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 at kernel.org>

Reviewed-by: Vlastimil Babka <vbabka at suse.cz>


> 
> ---
> 
> I am not sure if this open-coded version is intentional and required for
> memdesc transition. Drop the patch if it is.
> ---
>  mm/slab.h | 14 +-------------
>  1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/mm/slab.h b/mm/slab.h
> index f68c3ac8126f..970a13ac5b8e 100644
> --- a/mm/slab.h
> +++ b/mm/slab.h
> @@ -137,19 +137,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;
>  




More information about the linux-riscv mailing list