From: Liam R. Howlett Date: Wed, 11 May 2022 15:51:36 +0000 (-0400) Subject: mm/mmap: Remove case 1,6 from using vma_adjust() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=2273b38aaef7d886242792af7ab547d440e3753a;p=users%2Fjedix%2Flinux-maple.git 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 --- diff --git a/mm/mmap.c b/mm/mmap.c index e3486dfb7cd4..d2fccec093fa 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);