Re: [PATCH] hugetlb: Fix __prep_compound_gigantic_page page flag setting

From: Miaohe Lin
Date: Fri Nov 18 2022 - 21:06:18 EST


On 2022/11/19 3:52, Mike Kravetz wrote:
> Commit 2b21624fc232 ("hugetlb: freeze allocated pages before creating
> hugetlb pages") changed the order page flags were cleared and set in the
> head page. It moved the __ClearPageReserved after __SetPageHead.
> However, there is a check to make sure __ClearPageReserved is never
> done on a head page. If CONFIG_DEBUG_VM_PGFLAGS is enabled, the
> following BUG will be hit when creating a hugetlb gigantic page:
>
> page dumped because: VM_BUG_ON_PAGE(1 && PageCompound(page))
> ------------[ cut here ]------------
> kernel BUG at include/linux/page-flags.h:500!
> Call Trace will differ depending on whether hugetlb page is created
> at boot time or run time.
>
> Make sure to __ClearPageReserved BEFORE __SetPageHead.
>
> Reported-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx>
> Fixes: 2b21624fc232 ("hugetlb: freeze allocated pages before creating hugetlb pages")
> Signed-off-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx>

Yes, PG_reserved is PF_NO_COMPOUND policy. Thanks for fixing this.

Reviewed-by: Miaohe Lin <linmiaohe@xxxxxxxxxx>

Thanks,
Miaohe Lin