Subject: Re: [PATCH 08/14] netlink: implement memory mapped sendmsg()

From: Patrick McHardy <[email-masked]>
Date: Fri, 19 Apr 2013 13:04:38 +0200

On Thu, Apr 18, 2013 at 05:26:26PM +0100, Ben Hutchings wrote:
> On Thu, 2013-04-18 at 12:31 +0200, Patrick McHardy wrote:
> > On Wed, Apr 17, 2013 at 11:57:43PM +0100, Ben Hutchings wrote:
> > > On Wed, 2013-04-17 at 18:47 +0200, Patrick McHardy wrote:
> > > > Add support for mmap'ed sendmsg() to netlink. Since the kernel validates
> > > > received messages before processing them, the code makes sure userspace
> > > > can't modify the message contents after invoking sendmsg(). To do that
> > > > only a single mapping of the TX ring is allowed to exist and the socket
> > > > must not be shared. If either of these two conditions does not hold, it
> > > > falls back to copying.
> > > [...]
> > > 
> > > Is this resistant against copy_to_process()?
> > 
> > I don't know, there's no copy_to_process() function is the tree I'm using.
> 
> Sorry, I mean process_vm_writev().  copy_to_process() was the name in an
> earlier version of CMA.

I'm not sure whether process_vm_writev() allows to write to a memory mapped
area and, if so, whether it would invoke vm_ops->open() before doing so.

I'm looking into that, thanks.