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)"