]> 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>
Fri, 26 Aug 2022 17:57:55 +0000 (13:57 -0400)
Use the abstracted vma locking for do_brk_flags()

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

index bcaa0fa107b1f05e3634081c0d171da5f1547324..d3e2fa8652bacda2b7a73be39e66ec4e5f241147 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2941,6 +2941,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);
        /*
@@ -2967,19 +2968,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;
        }
@@ -3017,10 +3013,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;
 }