Re: [PATCH v2 25/33] mm/vma: make vma_set_range() static, drop insert_vm_struct() decl
From: Lorenzo Stoakes (ARM)
Date: Thu Jul 16 2026 - 05:41:12 EST
On Wed, Jul 15, 2026 at 07:45:59PM +0200, Vlastimil Babka (SUSE) wrote:
> On 7/10/26 22:17, Lorenzo Stoakes wrote:
> > With __install_special_mapping() moved to vma.c, vma_set_range() can be
> > made into a static function there and is now completely isolated from the
> > rest of mm.
>
> Pedantic nit: it was already "static", but in a .h file
> Yeah it was also "inline" but that's not the important part of this change.
>
> So I'd say it was rather moved to vma.c, but you can ignore this nit if you
> want.
That is pretty pedantic ;) I mean to say bare 'static' here obvs. I can fix if
any respin but I think ok as-is for now.
>
> > While we're here, we can also remove the insert_vm_struct() declaration
> > from mm.h - the function is implemented in vma.c and already declared in
> > vma.h, and has no users outside of mm.
> >
> > Also update the VMA userland tests to reflect this change.
> >
> > No functional change intended.
> >
> > Reviewed-by: Pedro Falcato <pfalcato@xxxxxxx>
> > Reviewed-by: Gregory Price <gourry@xxxxxxxxxx>
> > Signed-off-by: Lorenzo Stoakes <ljs@xxxxxxxxxx>
>
> Reviewed-by: Vlastimil Babka (SUSE) <vbabka@xxxxxxxxxx>
Thanks! :)
>
> > ---
> > include/linux/mm.h | 1 -
> > mm/internal.h | 9 ---------
> > mm/vma.c | 8 ++++++++
> > tools/testing/vma/shared.c | 9 ---------
> > tools/testing/vma/shared.h | 5 -----
> > 5 files changed, 8 insertions(+), 24 deletions(-)
> >
> > diff --git a/include/linux/mm.h b/include/linux/mm.h
> > index 3d69b597b9b1..762313b47301 100644
> > --- a/include/linux/mm.h
> > +++ b/include/linux/mm.h
> > @@ -4130,7 +4130,6 @@ void anon_rmap_tree_verify(struct anon_vma_chain *avc);
> >
> > /* mmap.c */
> > extern int __vm_enough_memory(const struct mm_struct *mm, long pages, int cap_sys_admin);
> > -extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
> > extern void exit_mmap(struct mm_struct *);
> > bool mmap_read_lock_maybe_expand(struct mm_struct *mm, struct vm_area_struct *vma,
> > unsigned long addr, bool write);
> > diff --git a/mm/internal.h b/mm/internal.h
> > index 01a762bcc2b2..2c650d280e90 100644
> > --- a/mm/internal.h
> > +++ b/mm/internal.h
> > @@ -1540,15 +1540,6 @@ extern bool mirrored_kernelcore;
> > bool memblock_has_mirror(void);
> > void memblock_free_all(void);
> >
> > -static __always_inline void vma_set_range(struct vm_area_struct *vma,
> > - unsigned long start, unsigned long end,
> > - pgoff_t pgoff)
> > -{
> > - vma->vm_start = start;
> > - vma->vm_end = end;
> > - vma->vm_pgoff = pgoff;
> > -}
> > -
> > static inline bool vma_soft_dirty_enabled(struct vm_area_struct *vma)
> > {
> > /*
> > diff --git a/mm/vma.c b/mm/vma.c
> > index 5308aa5a8c91..cc0e449ad0be 100644
> > --- a/mm/vma.c
> > +++ b/mm/vma.c
> > @@ -70,6 +70,14 @@ struct mmap_state {
> > .state = VMA_MERGE_START, \
> > }
> >
> > +static void vma_set_range(struct vm_area_struct *vma, unsigned long start,
> > + unsigned long end, pgoff_t pgoff)
> > +{
> > + vma->vm_start = start;
> > + vma->vm_end = end;
> > + vma->vm_pgoff = pgoff;
> > +}
> > +
> > /* Was this VMA ever forked from a parent, i.e. maybe contains CoW mappings? */
> > static bool vma_is_fork_child(struct vm_area_struct *vma)
> > {
> > diff --git a/tools/testing/vma/shared.c b/tools/testing/vma/shared.c
> > index 2565a5aecb80..bea9ea6db02a 100644
> > --- a/tools/testing/vma/shared.c
> > +++ b/tools/testing/vma/shared.c
> > @@ -120,12 +120,3 @@ unsigned long rlimit(unsigned int limit)
> > {
> > return (unsigned long)-1;
> > }
> > -
> > -void vma_set_range(struct vm_area_struct *vma,
> > - unsigned long start, unsigned long end,
> > - pgoff_t pgoff)
> > -{
> > - vma->vm_start = start;
> > - vma->vm_end = end;
> > - vma->vm_pgoff = pgoff;
> > -}
> > diff --git a/tools/testing/vma/shared.h b/tools/testing/vma/shared.h
> > index 8b9e3b11c3cb..ca4f1238f1c7 100644
> > --- a/tools/testing/vma/shared.h
> > +++ b/tools/testing/vma/shared.h
> > @@ -125,8 +125,3 @@ void __vma_set_dummy_anon_vma(struct vm_area_struct *vma,
> > /* Provide a simple dummy VMA/anon_vma dummy setup for testing. */
> > void vma_set_dummy_anon_vma(struct vm_area_struct *vma,
> > struct anon_vma_chain *avc);
> > -
> > -/* Helper function to specify a VMA's range. */
> > -void vma_set_range(struct vm_area_struct *vma,
> > - unsigned long start, unsigned long end,
> > - pgoff_t pgoff);
> >
>
Cheers, Lorenzo