Linus Torvalds 90fb702791 autofs: use __kernel_write() for the autofs pipe writing
autofs got broken in some configurations by commit 13c164b1a186
("autofs: switch to kernel_write") because there is now an extra LSM
permission check done by security_file_permission() in rw_verify_area().

autofs is one if the few places that really does want the much more
limited __kernel_write(), because the write is an internal kernel one
that shouldn't do any user permission checks (it also doesn't need the
file_start_write/file_end_write logic, since it's just a pipe).

There are a couple of other cases like that - accounting, core dumping,
and splice - but autofs stands out because it can be built as a module.

As a result, we need to export this internal __kernel_write() function
again.

We really don't want any other module to use this, but we don't have a
"EXPORT_SYMBOL_FOR_AUTOFS_ONLY()".  But we can mark it GPL-only to at
least approximate that "internal use only" for licensing.

While in this area, make autofs pass in NULL for the file position
pointer, since it's always a pipe, and we now use a NULL file pointer
for streaming file descriptors (see file_ppos() and commit 438ab720c675:
"vfs: pass ppos=NULL to .read()/.write() of FMODE_STREAM files")

This effectively reverts commits 9db977522449 ("fs: unexport
__kernel_write") and 13c164b1a186 ("autofs: switch to kernel_write").

Fixes: 13c164b1a186 ("autofs: switch to kernel_write")
Reported-by: Ondrej Mosnacek <omosnace@redhat.com>
Acked-by: Christoph Hellwig <hch@lst.de>
Acked-by: Acked-by: Ian Kent <raven@themaw.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-09-29 17:18:34 -07:00
..
2020-09-23 14:32:23 -07:00
\n
2020-08-28 10:57:14 -07:00
2020-08-25 18:01:36 -07:00
\n
2020-08-06 19:28:26 -07:00
2020-06-05 14:05:57 -07:00
2020-09-05 10:04:53 -07:00
2020-08-11 17:42:24 +09:00
2020-08-23 17:36:59 -05:00
2020-07-27 14:29:23 -04:00
2020-08-03 13:01:22 -07:00
2020-08-23 17:36:59 -05:00
2020-08-04 21:02:38 -04:00
2020-06-05 16:26:36 -07:00
2020-09-26 11:13:51 -07:00
2020-07-31 08:16:01 +02:00
2020-08-07 11:33:24 -07:00
2020-07-31 08:17:51 +02:00
2020-05-14 16:44:24 +02:00
2020-08-12 10:58:01 -07:00
2020-07-31 08:16:00 +02:00
2020-06-02 19:45:12 -07:00
2020-06-09 15:40:50 -07:00
2020-07-31 08:16:01 +02:00