From: Liam R. Howlett Date: Mon, 12 Aug 2024 22:07:29 +0000 (-0400) Subject: mm/vma: Inline munmap operation in mmap_region() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=7b96ab7b98cdc01d52959ba712b69505a0b7dec5;p=users%2Fjedix%2Flinux-maple.git mm/vma: Inline munmap operation in mmap_region() mmap_region is already passed sanitized addr and len, so change the call to do_vmi_munmap() to do_vmi_align_munmap() and inline the other checks. The inlining of the function and checks is an intermediate step in the series so future patches are easier to follow. Signed-off-by: Liam R. Howlett Reviewed-by: Lorenzo Stoakes --- diff --git a/mm/mmap.c b/mm/mmap.c index 112f2111c457..0f5be29d48b6 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1388,12 +1388,14 @@ unsigned long mmap_region(struct file *file, unsigned long addr, return -ENOMEM; } - /* Unmap any existing mapping in the area */ - error = do_vmi_munmap(&vmi, mm, addr, len, uf, false); - if (error == -EPERM) - return error; - else if (error) - return -ENOMEM; + /* Find the first overlapping VMA */ + vma = vma_find(&vmi, end); + if (vma) { + /* Unmap any existing mapping in the area */ + if (do_vmi_align_munmap(&vmi, vma, mm, addr, end, uf, false)) + return -ENOMEM; + vma = NULL; + } /* * Private writable mapping: check memory availability