{
struct mmu_notifier_range range;
struct mmu_gather tlb;
+ unsigned long end = start + size;
MA_STATE(mas, &vma->vm_mm->mm_mt, start, start);
lru_add_drain();
mmu_notifier_range_init(&range, MMU_NOTIFY_CLEAR, 0, vma, vma->vm_mm,
- start, start + size);
- tlb_gather_mmu(&tlb, vma->vm_mm, start, range.end);
+ start, end);
+ tlb_gather_mmu(&tlb, vma->vm_mm, start, end);
update_hiwater_rss(vma->vm_mm);
mmu_notifier_invalidate_range_start(&range);
do {
- unmap_single_vma(&tlb, vma, start, range.end, NULL);
- } while ((vma = mas_find(&mas, range.end - 1)) != NULL);
+ unmap_single_vma(&tlb, vma, start, end, NULL);
+ } while ((vma = mas_find(&mas, end - 1)) != NULL);
mmu_notifier_invalidate_range_end(&range);
- tlb_finish_mmu(&tlb, start, range.end);
+ tlb_finish_mmu(&tlb, start, end);
}
/**