Re: [PATCH] tmpfs: fix VM_MAYSHARE mappings for NOMMU

From: Rich Felker
Date: Mon Apr 25 2016 - 20:48:10 EST


On Mon, Apr 25, 2016 at 08:41:24PM -0400, Rich Felker wrote:
> On Mon, Apr 25, 2016 at 05:09:09PM -0700, Andrew Morton wrote:
> > On Fri, 22 Apr 2016 18:19:44 -0400 Rich Felker <dalias@xxxxxxxx> wrote:
> >
> > > Subject: [PATCH] tmpfs: fix VM_MAYSHARE mappings for NOMMU
> >
> > I take it that "ramfs" was intended here.
>
> They're two names for the same thing; I'm not sure which should be
> preferred.

Or maybe not... the relationship seems more complex, at least
hisorically, but the ramfs code here is what seems to provide the
backing for tmpfs (and maybe more?). Sorry for the quick and imprecise
reply.

Rich


> > > The nommu do_mmap expects f_op->get_unmapped_area to either succeed or
> > > return -ENOSYS for VM_MAYSHARE (e.g. private read-only) mappings.
> > > Returning addr in the non-MAP_SHARED case was completely wrong, and
> > > only happened to work because addr was 0. However, it prevented
> > > VM_MAYSHARE mappings from sharing backing with the fs cache, and
> > > forced such mappings (including shareable program text) to be copied
> > > whenever the number of mappings transitioned from 0 to 1, impacting
> > > performance and memory usage. Subsequent mappings beyond the first
> > > still correctly shared memory with the first.
> > >
> > > Instead, treat VM_MAYSHARE identically to VM_SHARED at the file ops
> > > level; do_mmap already handles the semantic differences between them.
> > >
> > > ...
> > >