]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: Remove case 1,6 from using vma_adjust()
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 11 May 2022 15:51:36 +0000 (11:51 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Wed, 11 May 2022 15:51:36 +0000 (11:51 -0400)
case 1 and 6 can use vma_expand() as it is written today.

Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
mm/mmap.c

index e3486dfb7cd4042e9f2b83c2fd2c07726e3a9125..d2fccec093fa8032ff929494ea8cae1106619ab8 100644 (file)
--- 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);