]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: Convert do_brk_flags() to use vma_prepare() and vma_complete()
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>
Mon, 28 Nov 2022 21:01:27 +0000 (16:01 -0500)
Use the abstracted vma locking for do_brk_flags()

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

index 7cc1df27479b20837ff704e15976e105f0807cc3..868c861ebf76cd423997046f9905ab83a495b3f7 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2977,6 +2977,7 @@ static int do_brk_flags(struct vma_iterator *vmi, struct vm_area_struct *vma,
                unsigned long addr, unsigned long len, unsigned long flags)
 {
        struct mm_struct *mm = current->mm;
+       struct vma_prepare vp;
 
        validate_mm_mt(mm);
        /*
@@ -3004,18 +3005,13 @@ static int do_brk_flags(struct vma_iterator *vmi, struct vm_area_struct *vma,
                        return -ENOMEM;
 
                vma_adjust_trans_huge(vma, vma->vm_start, addr + len, 0);
-               if (vma->anon_vma) {
-                       anon_vma_lock_write(vma->anon_vma);
-                       anon_vma_interval_tree_pre_update_vma(vma);
-               }
+               init_vma_prep(&vp, vma);
+               vma_prepare(&vp);
                vma->vm_end = addr + len;
                vma->vm_flags |= VM_SOFTDIRTY;
                vma_iter_store(vmi, vma);
 
-               if (vma->anon_vma) {
-                       anon_vma_interval_tree_post_update_vma(vma);
-                       anon_vma_unlock_write(vma->anon_vma);
-               }
+               vma_complete(&vp, vmi, mm);
                khugepaged_enter_vma(vma, flags);
                goto out;
        }