Commit f7c72265 authored by Xuewei Niu's avatar Xuewei Niu Committed by Jakub Kicinski
Browse files

vsock: Add support for SIOCINQ ioctl



Add support for SIOCINQ ioctl, indicating the length of bytes unread in the
socket. The value is obtained from `vsock_stream_has_data()`.

Signed-off-by: default avatarXuewei Niu <niuxuewei.nxw@antgroup.com>
Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Reviewed-by: default avatarLuigi Leonardi <leonardi@redhat.com>
Link: https://patch.msgid.link/20250708-siocinq-v6-2-3775f9a9e359@antgroup.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent f0c5827d
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -1389,6 +1389,28 @@ static int vsock_do_ioctl(struct socket *sock, unsigned int cmd,
	vsk = vsock_sk(sk);

	switch (cmd) {
	case SIOCINQ: {
		ssize_t n_bytes;

		if (!vsk->transport) {
			ret = -EOPNOTSUPP;
			break;
		}

		if (sock_type_connectible(sk->sk_type) &&
		    sk->sk_state == TCP_LISTEN) {
			ret = -EINVAL;
			break;
		}

		n_bytes = vsock_stream_has_data(vsk);
		if (n_bytes < 0) {
			ret = n_bytes;
			break;
		}
		ret = put_user(n_bytes, arg);
		break;
	}
	case SIOCOUTQ: {
		ssize_t n_bytes;