]> 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>
Fri, 26 Aug 2022 17:57:08 +0000 (13:57 -0400)
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 fd97e0f53fff5a50e7e7c0cd2ce91fe5ad7ef757..6747eadcc06ce3bea5ecfa105f7642f10314189d 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -715,6 +715,14 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
        if (mas_preallocate(&mas, vma, GFP_KERNEL))
                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;
@@ -736,12 +744,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start,
                }
        }
 
-       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)