summaryrefslogtreecommitdiffstats
path: root/net/socket.c
diff options
context:
space:
mode:
authorSlavomir Kaslev <kaslevs@vmware.com>2018-11-16 11:27:53 +0200
committerDavid S. Miller <davem@davemloft.net>2018-11-17 21:34:11 -0800
commit95506588d2c1d72ca29adef8ae9bf771bcfb4ced (patch)
treefc99cbe4f4da3a1eee2583d4b63b10010e87e6fa /net/socket.c
parentdf5a8ec64eed7fe45b556cfff503acd6429ab817 (diff)
downloadlinux-95506588d2c1d72ca29adef8ae9bf771bcfb4ced.tar.gz
linux-95506588d2c1d72ca29adef8ae9bf771bcfb4ced.tar.bz2
linux-95506588d2c1d72ca29adef8ae9bf771bcfb4ced.zip
socket: do a generic_file_splice_read when proto_ops has no splice_read
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 <kaslevs@vmware.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/socket.c b/net/socket.c
index 593826e11a53..334fcc617ef2 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -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);
}