From: Suren Baghdasaryan Date: Sat, 11 Jun 2022 04:42:02 +0000 (-0700) Subject: mm/mremap: write-lock VMA while remapping it to a new address range X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3e64d0b50d85519af6696bd556bc18d34bba9d97;p=users%2Fjedix%2Flinux-maple.git mm/mremap: write-lock VMA while remapping it to a new address range Write-lock VMA as locked before copying it and when copy_vma produces a new VMA. Signed-off-by: Suren Baghdasaryan Reviewed-by: Laurent Dufour --- diff --git a/mm/mmap.c b/mm/mmap.c index 121e17abf762..006a9d09dafc 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -3266,6 +3266,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_write_lock(new_vma); if (vma_link(mm, new_vma)) goto out_vma_link; *need_rmap_locks = false; diff --git a/mm/mremap.c b/mm/mremap.c index e7093def4760..2c3e2a0540d4 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -622,6 +622,7 @@ static unsigned long move_vma(struct vm_area_struct *vma, return -ENOMEM; } + vma_write_lock(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);