From: Liam R. Howlett Date: Wed, 28 Oct 2020 00:25:17 +0000 (-0400) Subject: mm/mmap: Fix vma locking on brk X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3a4a55e6898103fc17c7efad4a226e25f6b580b9;p=users%2Fjedix%2Flinux-maple.git mm/mmap: Fix vma locking on brk Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index 728c62da9f91..66ecfc8f3a31 100644 --- 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; } /*