]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: Fix vma locking on brk
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Wed, 28 Oct 2020 00:25:17 +0000 (20:25 -0400)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 5 Jan 2021 17:30:38 +0000 (12:30 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
mm/mmap.c

index 728c62da9f914a966ae53f71cbb2f2d501a6c72b..66ecfc8f3a31ce87489eb8e6cfad7d2c0ea9a4b5 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2904,33 +2904,16 @@ static int do_brk_munmap(struct vm_area_struct *vma, unsigned long newbrk,
 
        // Change the oldbrk of vma to the newbrk of the munmap area
        vma_adjust_trans_huge(vma, vma->vm_start, newbrk, 0);
-       if (vma->anon_vma) {
-               anon_vma_lock_write(vma->anon_vma);
-               anon_vma_interval_tree_pre_update_vma(vma);
-       }
        vma_mt_szero(vma->vm_mm, newbrk, vma->vm_end);
        vma->vm_end = newbrk;
        vmacache_invalidate(vma->vm_mm);
-       if (vma->anon_vma) {
-               anon_vma_interval_tree_post_update_vma(vma);
-               anon_vma_unlock_write(vma->anon_vma);
-       }
-
        unmap_pages = vma_pages(&unmap);
        if (unmap.vm_flags & VM_LOCKED) {
                mm->locked_vm -= unmap_pages;
                munlock_vma_pages_range(&unmap, newbrk, oldbrk);
        }
 
-       // prev of unmap_pages is just vma.
-       if (vma->vm_flags & VM_GROWSUP)
-               ret = 0;
-       else if (vma->vm_next && (vma->vm_next->vm_flags & VM_GROWSDOWN))
-               ret = 0;
-
-       if (ret)
-               mmap_write_downgrade(mm);
-
+       mmap_write_downgrade(mm);
        unmap_region(mm, &unmap, vma, newbrk, oldbrk);
        /* Statistics */
        vm_stat_account(mm, unmap.vm_flags, -unmap_pages);
@@ -2939,7 +2922,7 @@ static int do_brk_munmap(struct vm_area_struct *vma, unsigned long newbrk,
 
 munmap_full_vma:
        validate_mm_mt(mm);
-       return ret;
+       return 1;
 }
 
 /*