]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mmap: move anon_vma setting in __vma_adjust()
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 5 Aug 2022 20:04:16 +0000 (16:04 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 28 Nov 2022 21:00:56 +0000 (16:00 -0500)
Move the anon_vma setting & warn_no up the function.  This is done to
clear up the locking later.

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

index a55e84c5c73a997857b02309b13da1ba9e2c6b64..5daa4bca12ca06f9663ef5f80dbb93b36fe4d007 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -742,6 +742,14 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma,
        if (vma_iter_prealloc(vmi, vma))
                return -ENOMEM;
 
+       anon_vma = vma->anon_vma;
+       if (!anon_vma && adjust_next)
+               anon_vma = next->anon_vma;
+
+       if (anon_vma)
+               VM_WARN_ON(adjust_next && next->anon_vma &&
+                          anon_vma != next->anon_vma);
+
        vma_adjust_trans_huge(orig_vma, start, end, adjust_next);
        if (file) {
                mapping = file->f_mapping;
@@ -763,12 +771,7 @@ int __vma_adjust(struct vma_iterator *vmi, struct vm_area_struct *vma,
                }
        }
 
-       anon_vma = vma->anon_vma;
-       if (!anon_vma && adjust_next)
-               anon_vma = next->anon_vma;
        if (anon_vma) {
-               VM_WARN_ON(adjust_next && next->anon_vma &&
-                          anon_vma != next->anon_vma);
                anon_vma_lock_write(anon_vma);
                anon_vma_interval_tree_pre_update_vma(vma);
                if (adjust_next)