Messages in this thread Patch in this message | | | From | "Jason A. Donenfeld" <> | Subject | [PATCH] splice: allow direct splicing with chardevs | Date | Fri, 20 May 2022 11:57:47 +0200 |
| |
The original direct splicing mechanism from Jens required the input to be a regular file because it was avoiding the special socket case. It also recognized blkdevs as being close enough to a regular file. But it forgot about chardevs, which behave the same way and work fine here.
This commit adds the missing S_ISCHR condition so that chardevs such as /dev/urandom can be directly spliced without strangely returning -EINVAL.
Cc: Jens Axboe <axboe@suse.de> Cc: Al Viro <viro@zeniv.linux.org.uk> Fixes: b92ce5589374 ("[PATCH] splice: add direct fd <-> fd splicing support") Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> --- fs/splice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/splice.c b/fs/splice.c index 047b79db8eb5..7e673b1786fb 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -824,7 +824,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, * piped splicing for that! */ i_mode = file_inode(in)->i_mode; - if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode))) + if (unlikely(!S_ISREG(i_mode) && !S_ISBLK(i_mode) && !S_ISCHR(i_mode))) return -EINVAL; /* -- 2.35.1
| |