]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm/mremap: write-lock VMA while remapping it to a new address range
authorSuren Baghdasaryan <surenb@google.com>
Mon, 27 Feb 2023 17:36:16 +0000 (09:36 -0800)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 28 Mar 2023 23:24:53 +0000 (16:24 -0700)
Write-lock VMA as locked before copying it and when copy_vma produces a
new VMA.

Link: https://lkml.kernel.org/r/20230227173632.3292573-18-surenb@google.com
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Reviewed-by: Laurent Dufour <laurent.dufour@fr.ibm.com>
Reviewed-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/mmap.c
mm/mremap.c

index deeafe39e06b4a5c2769fd4a61c571511ca5c238..ebe6dc17198fc0d2304f9b0e51ca59fa6ac06226 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -3182,6 +3182,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
                        get_file(new_vma->vm_file);
                if (new_vma->vm_ops && new_vma->vm_ops->open)
                        new_vma->vm_ops->open(new_vma);
+               vma_start_write(new_vma);
                if (vma_link(mm, new_vma))
                        goto out_vma_link;
                *need_rmap_locks = false;
index 1ddf7beb62e9d42c60b2821943d7dc95ac59e566..327c38eb132e115d4cff318b2a18c82d7f217695 100644 (file)
@@ -623,6 +623,7 @@ static unsigned long move_vma(struct vm_area_struct *vma,
                        return -ENOMEM;
        }
 
+       vma_start_write(vma);
        new_pgoff = vma->vm_pgoff + ((old_addr - vma->vm_start) >> PAGE_SHIFT);
        new_vma = copy_vma(&vma, new_addr, new_len, new_pgoff,
                           &need_rmap_locks);