Re: [PATCH 2/4] mm: perform VMA allocation, freeing, duplication in mm
From: Liam R. Howlett
Date: Fri Apr 25 2025 - 07:01:04 EST
* Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx> [250425 06:45]:
...
> > > >
> > > > I think doing it this way fits the patterns we have established for
> > > > nommu/mmap separation, and I would say nommu is enough of a niche edge case
> > > > for us to really not want to have to go to great lengths to find ways of
> > > > sharing code.
> > > >
> > > > I am quite concerned about us having to consider it and deal with issues
> > > > around it so often, so want to try to avoid that as much as we can,
> > > > ideally.
> > >
> > > I think you're asking for more issues the way you have it now. It could
> > > be a very long time until someone sees that nommu isn't working,
> > > probably an entire stable kernel cycle. Basically the longest time it
> > > can go before being deemed unnecessary to fix.
> > >
> > > It could also be worse, it could end up like the arch code with bugs
> > > over a decade old not being noticed because it was forked off into
> > > another file.
> > >
> > > Could we create another file for the small section of common code and
> > > achieve your goals?
> >
> > That'd completely defeat the purpose of isolating core functions to vma.c.
> >
> > Again, I don't believe that bending over backwards to support this niche
> > use is appropriate.
> >
> > And if you're making a change to vm_area_alloc(), vm_area_free(),
> > vm_area_init_from(), vm_area_dup() it'd seem like an oversight not to check
> > nommu right?
> >
> > There's already a large amount of duplicated logic there specific to nommu
> > for which precisely the same could be said, including entirely parallel
> > brk(), mmap() implementations.
> >
> > So this isn't a change in how we handle nommu.
>
> I guess an alternative is to introduce a new vma_shared.c, vma_shared.h
> pair of files here, that we try to allow userland isolation for so vma.c
> can still use for userland testing.
>
> This then aligns with your requirement, and keeps it vma-centric like
> Suren's suggestion.
>
> Or perhaps it could even be vma_init.c, vma_init.h? To denote that it
> references the initialisation and allocation, etc. of VMAs?
Sure, the name isn't as important as the concept, but I like vma_init
better than vma_shared.
>
> Anyway we do that, we share it across all, and it solves all
> problems... gives us the isolation for userland testing and also isolation
> in mm, while also ensuring no code duplication with nommu.
>
> That work?
Yes, this is what I was suggesting.
I really think this is the least painful way to deal with nommu.
Otherwise we will waste more time later trying to fix what was
overlooked.
Thanks,
Liam