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 <songmuchun@xxxxxxxxxxxxx> --- 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