Commit f8ad8187 authored by Johannes Berg's avatar Johannes Berg Committed by Linus Torvalds

fs/pipe: allow sendfile() to pipe again

After commit 36e2c742 ("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: 36e2c742 ("fs: don't allow splice read/write without explicit ops")
Suggested-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Tested-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9f12e37c
...@@ -1206,6 +1206,7 @@ const struct file_operations pipefifo_fops = { ...@@ -1206,6 +1206,7 @@ const struct file_operations pipefifo_fops = {
.unlocked_ioctl = pipe_ioctl, .unlocked_ioctl = pipe_ioctl,
.release = pipe_release, .release = pipe_release,
.fasync = pipe_fasync, .fasync = pipe_fasync,
.splice_write = iter_file_splice_write,
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment