From: Liam R. Howlett Date: Fri, 11 Sep 2020 01:36:59 +0000 (-0400) Subject: mm/mmap: Fix accounting in count_vma_pages_range X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a917ebc5dff75709ccc8b78dd10d86a4fe723e1d;p=users%2Fjedix%2Flinux-maple.git mm/mmap: Fix accounting in count_vma_pages_range Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index 4a5b66849c6f..06b884ac475f 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -528,6 +528,7 @@ static unsigned long count_vma_pages_range(struct mm_struct *mm, 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); @@ -540,8 +541,12 @@ static unsigned long count_vma_pages_range(struct mm_struct *mm, 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; }