]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: Convert do_brk_flags() to use lock_vma()
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 11 Aug 2022 15:54:23 +0000 (11:54 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Thu, 11 Aug 2022 21:49:18 +0000 (17:49 -0400)
Use the abstracted vma locking for do_brk_flags()

Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
mm/mmap.c

index 45f5b8552ea92659e81369b330e8d0a1667f82ee..b5a212e54b4e870a2843ba61c6d6c5ce69b12aaf 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2935,6 +2935,7 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma,
                unsigned long addr, unsigned long len, unsigned long flags)
 {
        struct mm_struct *mm = current->mm;
+       struct vma_locking vma_lock;
 
        validate_mm_mt(mm);
 
@@ -2962,19 +2963,14 @@ static int do_brk_flags(struct ma_state *mas, struct vm_area_struct *vma,
                mas->index = vma->vm_start;
                mas->last = addr + len - 1;
                vma_adjust_trans_huge(vma, addr, addr + len, 0);
-               if (vma->anon_vma) {
-                       anon_vma_lock_write(vma->anon_vma);
-                       anon_vma_interval_tree_pre_update_vma(vma);
-               }
+               init_vma_lock(&vma_lock, vma);
+               lock_vma(&vma_lock);
                vma->vm_end = addr + len;
                vma->vm_flags |= VM_SOFTDIRTY;
                if (mas_store_gfp(mas, vma, GFP_KERNEL))
                        goto mas_expand_failed;
 
-               if (vma->anon_vma) {
-                       anon_vma_interval_tree_post_update_vma(vma);
-                       anon_vma_unlock_write(vma->anon_vma);
-               }
+               unlock_vma(&vma_lock, mas, mm);
                khugepaged_enter_vma(vma, flags);
                goto out;
        }
@@ -3013,10 +3009,7 @@ vma_alloc_fail:
        return -ENOMEM;
 
 mas_expand_failed:
-       if (vma->anon_vma) {
-               anon_vma_interval_tree_post_update_vma(vma);
-               anon_vma_unlock_write(vma->anon_vma);
-       }
+       unlock_vma(&vma_lock, mas, mm);
        return -ENOMEM;
 }