Messages in this thread Patch in this message | | | From | Johannes Berg <> | Subject | [PATCH] fs/pipe: allow sendfile() to pipe again | Date | Mon, 25 Jan 2021 10:16:15 +0100 |
| |
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 <hch@lst.de> Tested-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> --- Mostly for the record, since it looks like we'll have a proper fix without another intermediate pipe. However, this fixes the regression for now. --- fs/pipe.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/fs/pipe.c b/fs/pipe.c index c5989cfd564d..39c96845a72f 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, }; /* -- 2.26.2
| |