|
@@ -75,6 +75,8 @@ static void vunmap_pmd_range(pud_t *pud, unsigned long addr, unsigned long end)
|
|
|
pmd = pmd_offset(pud, addr);
|
|
|
do {
|
|
|
next = pmd_addr_end(addr, end);
|
|
|
+ if (pmd_clear_huge(pmd))
|
|
|
+ continue;
|
|
|
if (pmd_none_or_clear_bad(pmd))
|
|
|
continue;
|
|
|
vunmap_pte_range(pmd, addr, next);
|
|
@@ -89,6 +91,8 @@ static void vunmap_pud_range(pgd_t *pgd, unsigned long addr, unsigned long end)
|
|
|
pud = pud_offset(pgd, addr);
|
|
|
do {
|
|
|
next = pud_addr_end(addr, end);
|
|
|
+ if (pud_clear_huge(pud))
|
|
|
+ continue;
|
|
|
if (pud_none_or_clear_bad(pud))
|
|
|
continue;
|
|
|
vunmap_pmd_range(pud, addr, next);
|