From: Liam R. Howlett Date: Fri, 21 Apr 2023 15:08:22 +0000 (-0400) Subject: mm: Avoid rewalk in mmap_region X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b2fa64cf1e88ac16b263fffaedc9c1c89f14bc1b;p=users%2Fjedix%2Flinux-maple.git mm: Avoid rewalk in mmap_region Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index 36fb185e91b7..06e033b3cc62 100644 --- 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)