|
@@ -2638,8 +2638,9 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma,
|
|
|
|
|
|
tlb_start_vma(tlb, vma);
|
|
tlb_start_vma(tlb, vma);
|
|
mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end);
|
|
mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end);
|
|
|
|
+ address = start;
|
|
again:
|
|
again:
|
|
- for (address = start; address < end; address += sz) {
|
|
|
|
|
|
+ for (; address < end; address += sz) {
|
|
ptep = huge_pte_offset(mm, address);
|
|
ptep = huge_pte_offset(mm, address);
|
|
if (!ptep)
|
|
if (!ptep)
|
|
continue;
|
|
continue;
|
|
@@ -2686,6 +2687,7 @@ again:
|
|
page_remove_rmap(page);
|
|
page_remove_rmap(page);
|
|
force_flush = !__tlb_remove_page(tlb, page);
|
|
force_flush = !__tlb_remove_page(tlb, page);
|
|
if (force_flush) {
|
|
if (force_flush) {
|
|
|
|
+ address += sz;
|
|
spin_unlock(ptl);
|
|
spin_unlock(ptl);
|
|
break;
|
|
break;
|
|
}
|
|
}
|