Merge tag 'gfs2-v5.19-rc4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / fs / splice.c
index 047b79d..93a2c9b 100644 (file)
@@ -814,17 +814,15 @@ 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 being a regular file, as we don't want to
-        * randomly drop data for eg socket -> socket splicing. Use the
-        * piped splicing for that!
+        * 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!
         */
-       i_mode = file_inode(in)->i_mode;
-       if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode)))
+       if (unlikely(!(in->f_mode & FMODE_LSEEK)))
                return -EINVAL;
 
        /*