On Tue, Jan 7, 2025 at 9:51 AM Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> wrote: > > * Suren Baghdasaryan <surenb@xxxxxxxxxx> [241226 12:07]: > > nommu configuration has two places where vma gets attached to the vma tree > > without write-locking it. Add the missing locks to ensure vma is always > > locked before it's attached. > > Does the delete side need to write lock as well? Ugh. I just realized that CONFIG_PER_VMA_LOCK depends on CONFIG_MMU, so this patch is not needed because all these per-vma functions are NoOps when CONFIG_PER_VMA_LOCK=n. I'll drop it in the next version. > > > > > Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx> > > --- > > mm/nommu.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/mm/nommu.c b/mm/nommu.c > > index 72c8c505836c..1754e84e5758 100644 > > --- a/mm/nommu.c > > +++ b/mm/nommu.c > > @@ -1189,6 +1189,7 @@ unsigned long do_mmap(struct file *file, > > goto error_just_free; > > > > setup_vma_to_mm(vma, current->mm); > > + vma_start_write(vma); > > current->mm->map_count++; > > /* add the VMA to the tree */ > > vma_iter_store(&vmi, vma, true); > > @@ -1356,6 +1357,7 @@ static int split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma, > > > > setup_vma_to_mm(vma, mm); > > setup_vma_to_mm(new, mm); > > + vma_start_write(new); > > vma_iter_store(vmi, new, true); > > mm->map_count++; > > return 0; > > -- > > 2.47.1.613.gc27f4b7a9f-goog > >