From 2273b38aaef7d886242792af7ab547d440e3753a Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Wed, 11 May 2022 11:51:36 -0400 Subject: [PATCH] mm/mmap: Remove case 1,6 from using vma_adjust() case 1 and 6 can use vma_expand() as it is written today. Signed-off-by: Liam R. Howlett --- mm/mmap.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index e3486dfb7cd40..d2fccec093fa8 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1043,6 +1043,7 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) { + MA_STATE(mas, &mm->mm_mt, addr, addr); pgoff_t pglen = (end - addr) >> PAGE_SHIFT; struct vm_area_struct *area, *next; int err; @@ -1054,10 +1055,10 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, if (vm_flags & VM_SPECIAL) return NULL; - next = find_vma(mm, prev ? prev->vm_end : 0); + next = mas_find(&mas, end + 1); area = next; if (area && area->vm_end == end) /* cases 6, 7, 8 */ - next = find_vma(mm, next->vm_end); + next = mas_find(&mas, end + 1); /* verify some invariant that must be enforced by the caller */ VM_WARN_ON(prev && addr <= prev->vm_start); @@ -1084,8 +1085,8 @@ struct vm_area_struct *vma_merge(struct mm_struct *mm, is_mergeable_anon_vma(prev->anon_vma, next->anon_vma, NULL)) { /* cases 1, 6 */ - err = vma_adjust(prev, prev->vm_start, next->vm_end, - prev->vm_pgoff, prev); + err = vma_expand(&mas, prev, prev->vm_start, next->vm_end, + prev->vm_pgoff, next); } else /* cases 2, 5, 7 */ err = vma_adjust(prev, prev->vm_start, end, prev->vm_pgoff, prev); -- 2.50.1