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>
This commit is contained in:
parent
df5a8ec64e
commit
95506588d2
|
@ -853,7 +853,7 @@ static ssize_t sock_splice_read(struct file *file, loff_t *ppos,
|
||||||
struct socket *sock = file->private_data;
|
struct socket *sock = file->private_data;
|
||||||
|
|
||||||
if (unlikely(!sock->ops->splice_read))
|
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);
|
return sock->ops->splice_read(sock, ppos, pipe, len, flags);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue