]> 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>
Fri, 30 Oct 2020 19:13:40 +0000 (15:13 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
mm/mmap.c

index e173561e5022fe003d2410d7ce7840173eaab240..ad63cc7cf3da9584d7431f036b6bdf0549d36d25 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2896,33 +2896,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);
@@ -2931,7 +2914,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;
 }
 
 /*