From: Suren Baghdasaryan Date: Thu, 7 Jul 2022 23:16:34 +0000 (-0700) Subject: mm/mmap: write-lock adjacent VMAs if they can grow into unmapped area X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=d8ae22ca901ec283b5d2c1fb670c3c2acd181538;p=users%2Fjedix%2Flinux-maple.git mm/mmap: write-lock adjacent VMAs if they can grow into unmapped area 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 --- diff --git a/mm/mmap.c b/mm/mmap.c index faa5d3a5d45b..50f6494d2178 100644 --- 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); }