]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: write-lock adjacent VMAs if they can grow into unmapped area
authorSuren Baghdasaryan <surenb@google.com>
Thu, 7 Jul 2022 23:16:34 +0000 (16:16 -0700)
committerSuren Baghdasaryan <surenb@google.com>
Wed, 23 Nov 2022 02:09:45 +0000 (02:09 +0000)
While unmapping VMAs, adjacent VMAs might be able to grow into the area
being unmapped. In such cases write-lock adjacent VMAs to prevent this
growth.

Signed-off-by: Suren Baghdasaryan <surenb@google.com>
mm/mmap.c

index faa5d3a5d45bd369a9bcce348f1d439bef3dd750..50f6494d2178d070d830ae644ef962e2577e288b 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2461,11 +2461,13 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
         * down_read(mmap_lock) and collide with the VMA we are about to unmap.
         */
        if (downgrade) {
-               if (next && (next->vm_flags & VM_GROWSDOWN))
+               if (next && (next->vm_flags & VM_GROWSDOWN)) {
+                       vma_write_lock(next);
                        downgrade = false;
-               else if (prev && (prev->vm_flags & VM_GROWSUP))
+               } else if (prev && (prev->vm_flags & VM_GROWSUP)) {
+                       vma_write_lock(prev);
                        downgrade = false;
-               else
+               else
                        mmap_write_downgrade(mm);
        }