unsigned long nr_pages = 0;
struct vm_area_struct *vma;
unsigned long vm_start, vm_end;
+ MA_STATE(mas, &mm->mm_mt, addr, addr);
/* Find first overlaping mapping */
vma = find_vma_intersection(mm, addr, end);
nr_pages = (min(end, vm_end) - max(addr, vm_start)) >> PAGE_SHIFT;
/* Iterate over the rest of the overlaps */
- mt_for_each(&mm->mm_mt, vma, addr, end)
+ mas.start = mas.end = vm_end;
+ mas_for_each(mas, vma, end) {
+ vm_start = vma->vm_start;
+ vm_end = vma->vm_end;
nr_pages += (min(end, vm_end) - vm_start) >> PAGE_SHIFT;
+ }
return nr_pages;
}