socket: do a generic_file_splice_read when proto_ops has no splice_read
Subsystems (3)
PATCH 1/1 socket: do a generic_file_splice_read when proto_ops has no splice_read
From: Slavomir Kaslev <[email protected]>
splice(2) fails with -EINVAL when called reading on a socket with no splice_read set in its proto_ops (such as vsock sockets). Switch this to fallbacks to a generic_file_splice_read instead.
Signed-off-by Slavomir Kaslev <[email protected]>
--- net/socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/socket.c +1 -1
@@ -853,7 +853,7 @@ static ssize_t sock_splice_read(struct file *file, loff_t *ppos,struct socket *sock = file->private_data;if (unlikely (!sock->ops->splice_read)) -return -EINVAL ; +return generic_file_splice_read (file, ppos, pipe, len, flags);return sock->ops->splice_read (sock, ppos, pipe, len, flags); }
Signature · 1 line
2.19.1
From: [email protected]
Date: Fri, 16 Nov 2018 11:27:53 +0200
Quoted 7 lines
From: Slavomir Kaslev <[email protected]>
splice(2) fails with
-EINVALwhen called reading on a socket with nosplice_readset in itsproto_ops(such as vsock sockets). Switch this to fallbacks to ageneric_file_splice_readinstead.Signed-off-by Slavomir Kaslev <[email protected]>
Applied.
I wonder why we left things this way for so long.