From f8e33f0c0dcd534ac4dbed7f55f727d80f1f5375 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Thu, 10 Sep 2020 21:36:59 -0400 Subject: [PATCH] mm/mmap: Fix accounting in count_vma_pages_range Signed-off-by: Liam R. Howlett --- mm/mmap.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/mmap.c b/mm/mmap.c index 24537cc57c1f..0a12446b25ad 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; } -- 2.50.1