From: Liam R. Howlett Date: Sat, 10 Oct 2020 01:40:55 +0000 (-0400) Subject: maple_tree: Fix ltp shmt09 by checking if vma->vm_anon before locking in vma_mt_brk() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=a7eec25de67c0855a1f898e6e4eeeedb12b884dc;p=users%2Fjedix%2Flinux-maple.git maple_tree: Fix ltp shmt09 by checking if vma->vm_anon before locking in vma_mt_brk() Signed-off-by: Liam R. Howlett --- diff --git a/mm/mmap.c b/mm/mmap.c index 26b1e729382e..5b04a4e79019 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -624,8 +624,10 @@ void vma_mt_brk(struct vm_area_struct *vma, unsigned long new_end) { bool store = false; - anon_vma_lock_write(vma->anon_vma); - anon_vma_interval_tree_pre_update_vma(vma); + if (vma->anon_vma) { + anon_vma_lock_write(vma->anon_vma); + anon_vma_interval_tree_pre_update_vma(vma); + } // changing the back. if (vma->vm_end > new_end) { @@ -639,8 +641,10 @@ void vma_mt_brk(struct vm_area_struct *vma, unsigned long new_end) vma_mt_store(vma->vm_mm, vma); - anon_vma_interval_tree_post_update_vma(vma); - anon_vma_unlock_write(vma->anon_vma); + if (vma->anon_vma) { + anon_vma_interval_tree_post_update_vma(vma); + anon_vma_unlock_write(vma->anon_vma); + } } static void vma_link(struct mm_struct *mm, struct vm_area_struct *vma, @@ -2922,8 +2926,6 @@ 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); vma_mt_brk(vma, newbrk); - // Handle usertfaults here. - // unmap_pages = vma_pages(&unmap); if (unmap.vm_flags & VM_LOCKED) {