[parisc-linux] Re: Problems with kernel mmap (failing tst-mmap-eofsync in glibc on parisc)

David S. Miller davem@redhat.com
Fri, 22 Aug 2003 11:01:44 -0700


On Fri, 22 Aug 2003 10:36:34 -0700
"David S. Miller" <davem@redhat.com> wrote:

> On Fri, 22 Aug 2003 18:41:03 +0100
> Matthew Wilcox <willy@debian.org> wrote:
> 
> > Uhm.  So what happens when the user has stored into the page and now
> > the kernel wants to read from it?  There's still data in the cache for
> > the user mapping that's non-coherent with the kernel mapping.
> 
> I see.  This causes the page cache read flush_dcache_page() call
> not to trigger.

Wait, I'm confused again.

How can the user "write" to the mmap()'d side if PROT_WRITE
was not specified?  That is the only case in which the proposed
patch could make a difference, we check this:

	switch (flags & MAP_TYPE) {
		case MAP_SHARED:
			if ((prot&PROT_WRITE) && !(file->f_mode&FMODE_WRITE))
				return -EACCES;

Therefore if the user can write to the page, file->f_mode will
have the write bit set too.

So the proposed patch looks bogus to me.