From: Johannes Berg Date: Mon, 25 Jan 2021 09:16:15 +0000 (+0100) Subject: fs/pipe: allow sendfile() to pipe again X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~363^2~2096 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=e8572713897eb9e4bfaef90bf15d5dd00d7126fc;p=linux.git fs/pipe: allow sendfile() to pipe again commit f8ad8187c3b536ee2b10502a8340c014204a1af0 upstream. After commit 36e2c7421f02 ("fs: don't allow splice read/write without explicit ops") sendfile() could no longer send data from a real file to a pipe, breaking for example certain cgit setups (e.g. when running behind fcgiwrap), because in this case cgit will try to do exactly this: sendfile() to a pipe. Fix this by using iter_file_splice_write for the splice_write method of pipes, as suggested by Christoph. Cc: stable@vger.kernel.org Fixes: 36e2c7421f02 ("fs: don't allow splice read/write without explicit ops") Suggested-by: Christoph Hellwig Reviewed-by: Christoph Hellwig Tested-by: Johannes Berg Signed-off-by: Johannes Berg Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/pipe.c b/fs/pipe.c index 0ac197658a2d..412b3b618994 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -1206,6 +1206,7 @@ const struct file_operations pipefifo_fops = { .unlocked_ioctl = pipe_ioctl, .release = pipe_release, .fasync = pipe_fasync, + .splice_write = iter_file_splice_write, }; /*