Unverified Commit a25007b6 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14984 vsock/bpf: return early if transport is not assigned

parents 6a2a7743 ed0de9e6
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ static int vsock_bpf_recvmsg(struct sock *sk, struct msghdr *msg,
			     size_t len, int flags, int *addr_len)
{
	struct sk_psock *psock;
	struct vsock_sock *vsk;
	int copied;

	psock = sk_psock_get(sk);
@@ -84,6 +85,13 @@ static int vsock_bpf_recvmsg(struct sock *sk, struct msghdr *msg,
		return __vsock_recvmsg(sk, msg, len, flags);

	lock_sock(sk);
	vsk = vsock_sk(sk);

	if (!vsk->transport) {
		copied = -ENODEV;
		goto out;
	}

	if (vsock_has_data(sk, psock) && sk_psock_queue_empty(psock)) {
		release_sock(sk);
		sk_psock_put(sk, psock);
@@ -108,6 +116,7 @@ static int vsock_bpf_recvmsg(struct sock *sk, struct msghdr *msg,
		copied = sk_msg_recvmsg(sk, psock, msg, len, flags);
	}

out:
	release_sock(sk);
	sk_psock_put(sk, psock);