On Thu, 4 Apr 2024 10:21:21 -0400 Peter Xu <peterx@xxxxxxxxxx> wrote: > Andrew, could you help update with Matthew's fixup? The comment is > definitely better than what I wrote in all cases. From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: mm-allow-anon-exclusive-check-over-hugetlb-tail-pages-fix Date: Thu Apr 4 01:27:47 PM PDT 2024 simplify PageAnonExclusive(), per Matthew Link: https://lkml.kernel.org/r/Zg3u5Sh9EbbYPhaI@xxxxxxxxxxxxxxxxxxxx Cc: David Hildenbrand <david@xxxxxxxxxx> Cc: Huacai Chen <chenhuacai@xxxxxxxxxx> Cc: Jason Gunthorpe <jgg@xxxxxxxxxx> Cc: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Cc: Nathan Chancellor <nathan@xxxxxxxxxx> Cc: Peter Xu <peterx@xxxxxxxxxx> Cc: Ryan Roberts <ryan.roberts@xxxxxxx> Cc: WANG Xuerui <kernel@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/page-flags.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) --- a/include/linux/page-flags.h~mm-allow-anon-exclusive-check-over-hugetlb-tail-pages-fix +++ a/include/linux/page-flags.h @@ -1096,11 +1096,10 @@ static __always_inline int PageAnonExclu { VM_BUG_ON_PGFLAGS(!PageAnon(page), page); /* - * Allow the anon-exclusive check to work on hugetlb tail pages. - * Here hugetlb pages will always guarantee the anon-exclusiveness - * of the head page represents the tail pages. + * HugeTLB stores this information on the head page; THP keeps it per + * page */ - if (PageHuge(page) && !PageHead(page)) + if (PageHuge(page)) page = compound_head(page); return test_bit(PG_anon_exclusive, &PF_ANY(page, 1)->flags); } _