2023-07-19 07:03:00

by Muchun Song

[permalink] [raw]
Subject: [PATCH] mm: hugetlb_vmemmap: use PageCompound() instead of PageReserved()

The ckeck of PageReserved() is easy to be broken in the future, PageCompound()
is more stable to check if the page should be split.

Signed-off-by: Muchun Song <[email protected]>
---
mm/hugetlb_vmemmap.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c
index 4b9734777f69..8068fe890f52 100644
--- a/mm/hugetlb_vmemmap.c
+++ b/mm/hugetlb_vmemmap.c
@@ -73,8 +73,10 @@ static int split_vmemmap_huge_pmd(pmd_t *pmd, unsigned long start)
* be treated as indepdenent small pages (as they can be freed
* individually).
*/
- if (!PageReserved(head))
+ if (PageCompound(head)) {
+ VM_BUG_ON(compound_order(head) != get_order(PMD_SIZE));
split_page(head, get_order(PMD_SIZE));
+ }

/* Make pte visible before pmd. See comment in pmd_install(). */
smp_wmb();
--
2.11.0