]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mmap: Move locking of detached tree.
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 6 Sep 2021 03:31:46 +0000 (23:31 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 6 Sep 2021 03:31:46 +0000 (23:31 -0400)
Fixes lock checking

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

index a732f116f0ecfa531b62740897776c596b707963..a3c8d8b33ff2ecadda36ddb186eac3a8cb466470 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -2404,7 +2404,6 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
         * Detach a range of VMAs from the mm. Using next as a temp variable as
         * it is always overwritten.
         */
-       mas_lock(&mas_detach);
        mas_for_each(mas, next, end - 1) {
                /* Does it split the end? */
                if (next->vm_end > end) {
@@ -2421,13 +2420,14 @@ do_mas_align_munmap(struct ma_state *mas, struct vm_area_struct *vma,
                BUG_ON(next->vm_start < start);
                BUG_ON(next->vm_start > end);
 #endif
+               mas_lock(&mas_detach);
                vma_mas_store(next, &mas_detach);
+               mas_unlock(&mas_detach);
                if (next->vm_flags & VM_LOCKED) {
                        mm->locked_vm -= vma_pages(next);
                        munlock_vma_pages_all(next);
                }
        }
-       mas_unlock(&mas_detach);
 
        mas_set(mas, end);
        next = mas_find(mas, ULONG_MAX);