|
@@ -166,7 +166,7 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
|
|
|
next = pmd_addr_end(addr, end);
|
|
|
if (!is_swap_pmd(*pmd) && !pmd_trans_huge(*pmd) && !pmd_devmap(*pmd)
|
|
|
&& pmd_none_or_clear_bad(pmd))
|
|
|
- continue;
|
|
|
+ goto next;
|
|
|
|
|
|
/* invoke the mmu notifier if the pmd is populated */
|
|
|
if (!mni_start) {
|
|
@@ -188,7 +188,7 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
|
|
|
}
|
|
|
|
|
|
/* huge pmd was handled */
|
|
|
- continue;
|
|
|
+ goto next;
|
|
|
}
|
|
|
}
|
|
|
/* fall through, the trans huge pmd just split */
|
|
@@ -196,6 +196,8 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
|
|
|
this_pages = change_pte_range(vma, pmd, addr, next, newprot,
|
|
|
dirty_accountable, prot_numa);
|
|
|
pages += this_pages;
|
|
|
+next:
|
|
|
+ cond_resched();
|
|
|
} while (pmd++, addr = next, addr != end);
|
|
|
|
|
|
if (mni_start)
|