From 9afa911254f8886b674db1e41b3cab8512e5ccc4 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Fri, 9 Oct 2020 21:40:55 -0400 Subject: [PATCH] maple_tree: Fix ltp shmt09 by checking if vma->vm_anon before locking in vma_mt_brk() Signed-off-by: Liam R. Howlett --- mm/mmap.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index a270ffbaf0e7..362698fac7eb 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, @@ -2930,8 +2934,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) { -- 2.50.1