summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorSasha Levin <sashal@kernel.org>2022-10-15 14:18:38 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-10-17 18:26:07 +0300
commita07708a843558658de1cdff63ae653e6dcb8c81a (patch)
tree68fd2d506f89f88ee0db0fc24f59ee5f5ad682a5 /fs
parent3783e64fee4a624f3ed1d7d6ae630890922edb7b (diff)
downloadlinux-a07708a843558658de1cdff63ae653e6dcb8c81a.tar.xz
Revert "fs: check FMODE_LSEEK to control internal pipe splicing"
This reverts commit fd0a6e99b61e6c08fa5cf585d54fd956f70c73a6. Which was upstream commit 97ef77c52b789ec1411d360ed99dca1efe4b2c81. The commit is missing dependencies and breaks NFS tests, remove it for now. Reported-by: Saeed Mirzamohammadi <saeed.mirzamohammadi@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/splice.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/splice.c b/fs/splice.c
index 6610e55c0e2a..866d5c2367b2 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -806,15 +806,17 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
{
struct pipe_inode_info *pipe;
long ret, bytes;
+ umode_t i_mode;
size_t len;
int i, flags, more;
/*
- * We require the input to be seekable, as we don't want to randomly
- * drop data for eg socket -> socket splicing. Use the piped splicing
- * for that!
+ * We require the input being a regular file, as we don't want to
+ * randomly drop data for eg socket -> socket splicing. Use the
+ * piped splicing for that!
*/
- if (unlikely(!(in->f_mode & FMODE_LSEEK)))
+ i_mode = file_inode(in)->i_mode;
+ if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode)))
return -EINVAL;
/*