|
@@ -592,8 +592,14 @@ static void hugetlb_free_pmd_range(struct mmu_gather *tlb, pud_t *pud,
|
|
|
do {
|
|
|
pmd = pmd_offset(pud, addr);
|
|
|
next = pmd_addr_end(addr, end);
|
|
|
- if (pmd_none_or_clear_bad(pmd))
|
|
|
+ if (!is_hugepd(pmd)) {
|
|
|
+ /*
|
|
|
+ * if it is not hugepd pointer, we should already find
|
|
|
+ * it cleared.
|
|
|
+ */
|
|
|
+ WARN_ON(!pmd_none_or_clear_bad(pmd));
|
|
|
continue;
|
|
|
+ }
|
|
|
#ifdef CONFIG_PPC_FSL_BOOK3E
|
|
|
/*
|
|
|
* Increment next by the size of the huge mapping since
|