]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
maple_tree: Fix ltp shmt09 by checking if vma->vm_anon before locking in vma_mt_brk()
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Sat, 10 Oct 2020 01:40:55 +0000 (21:40 -0400)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 30 Oct 2020 19:13:07 +0000 (15:13 -0400)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
mm/mmap.c

index 26b1e729382e8bddf30cd44106418edb06abee7c..5b04a4e7901955bb00b2c855ab66013b14b7ca14 100644 (file)
--- 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) {