Re: [PATCH 2/2] exec: open code copy_string_kernel

From: Al Viro
Date: Fri May 01 2020 - 17:44:00 EST


On Fri, May 01, 2020 at 09:26:39PM +0200, Christoph Hellwig wrote:
> On Fri, May 01, 2020 at 01:50:49PM +0100, Al Viro wrote:
> > On Fri, May 01, 2020 at 12:41:05PM +0200, Christoph Hellwig wrote:
> > > Currently copy_string_kernel is just a wrapper around copy_strings that
> > > simplifies the calling conventions and uses set_fs to allow passing a
> > > kernel pointer. But due to the fact the we only need to handle a single
> > > kernel argument pointer, the logic can be sigificantly simplified while
> > > getting rid of the set_fs.
> >
> > I can live with that... BTW, why do we bother with flush_cache_page() (by
> > way of get_arg_page()) here and in copy_strings()? How could *anything*
> > have accessed that page by its address in new mm - what are we trying to
> > flush here?
>
> s/get_arg_page/flush_arg_page/ ?

of course - sorry...

> No idea, what the use case is, but this comes from:
>
> commit b6a2fea39318e43fee84fa7b0b90d68bed92d2ba
> Author: Ollie Wild <aaw@xxxxxxxxxx>
> Date: Thu Jul 19 01:48:16 2007 -0700
>
> mm: variable length argument support

I know. And it comes with no explanations in there ;-/ AFAICS, back then
the situation hadn't been any different - mm we are inserting the arg pages
into is not active, so there shouldn't be anything in anyone's cache for
that virtual address in that vma...