]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm: Avoid rewalk in mmap_region
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Fri, 21 Apr 2023 15:08:22 +0000 (11:08 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Tue, 2 May 2023 17:51:58 +0000 (13:51 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
mm/mmap.c

index 36fb185e91b761cdd19f93766198b7c63997e13b..06e033b3cc62b1ece1f6b22ee0415c320b0bdb84 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2645,9 +2645,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
                goto expanded;
        }
 
+cannot_expand:
+       if (prev)
+               mas_next_range(&mas, ULONG_MAX);
+       BUG_ON(mas.last < addr);
+       BUG_ON(mas.index > end - 1);
        mas.index = addr;
        mas.last = end - 1;
-cannot_expand:
        /*
         * Determine the object being mapped and call the appropriate
         * specific mapper. the address has already been validated, but
@@ -2744,7 +2748,7 @@ cannot_expand:
        if (vma->vm_file)
                i_mmap_lock_write(vma->vm_file->f_mapping);
 
-       vma_mas_store(vma, &mas);
+       mas_store_prealloc(&mas, vma);
        mm->map_count++;
        if (vma->vm_file) {
                if (vma->vm_flags & VM_SHARED)