On Tue, Jan 7, 2025 at 9:35 AM Vlastimil Babka <vbabka@xxxxxxx> wrote: > > On 12/26/24 18:07, Suren Baghdasaryan wrote: > > vma_start_write() is used in many places and will grow in size very soon. > > It is not used in performance critical paths and uninlining it should > > limit the future code size growth. > > No functional changes. > > > > Signed-off-by: Suren Baghdasaryan <surenb@xxxxxxxxxx> > > Reviewed-by: Vlastimil Babka <vbabka@xxxxxxx> > > > --- a/mm/memory.c > > +++ b/mm/memory.c > > @@ -6328,6 +6328,20 @@ struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm, > > #endif > > > > #ifdef CONFIG_PER_VMA_LOCK > > +void __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq) > > +{ > > + down_write(&vma->vm_lock.lock); > > + /* > > + * We should use WRITE_ONCE() here because we can have concurrent reads > > + * from the early lockless pessimistic check in vma_start_read(). > > + * We don't really care about the correctness of that early check, but > > + * we should use WRITE_ONCE() for cleanliness and to keep KCSAN happy. > > + */ > > + WRITE_ONCE(vma->vm_lock_seq, mm_lock_seq); > > + up_write(&vma->vm_lock.lock); > > +} > > +EXPORT_SYMBOL_GPL(__vma_start_write); > > Do any modules need it? If not we shouldn't export. I'm pretty sure I added it because of the allmodconfig build failure but let me rerun it and see which module was using it. > > > /* > > * Lookup and lock a VMA under RCU protection. Returned VMA is guaranteed to be > > * stable and not isolated. If the VMA is not found or is being modified the >