Re: [RFC][PATCHSET] iov_iter work

From: Al Viro
Date: Mon Jun 07 2021 - 10:43:53 EST


On Mon, Jun 07, 2021 at 10:28:37AM +0100, Christoph Hellwig wrote:
> On Sun, Jun 06, 2021 at 03:46:37PM -0700, Linus Torvalds wrote:
> > And yes, I realize that 'uaccess_kernel()' is hopefully always false
> > on any architectures we care about and so the compiler would just pick
> > one at compile time rather than actually having both those
> > initializers.
> >
> > But I think that "the uaccess_kernel() KVEC case is legacy for
> > architectures that haven't converted to the new world order yet" thing
> > is just even more of an argument for not duplicating and writing the
> > code out in full on a source level (and making that normal case be
> > ".iov = iov").
>
> It can't even happen for the legacy architectures, given that the
> remaining set_fs() areas are small and never do iov_iter based I/O.

Umm... It's a bit trickier than that - e.g. a kernel thread on
a CONFIG_SET_FS target passing a kernel pointer to vfs_read() could've
ended up with new_sync_write() hitting iov_iter_init().

AFAICS, we don't have any instances of that, but it's not
as simple as "we don't do any iov_iter work under set_fs(KERNEL_DS)"