Commit 9f0fc981 authored by Michal Luczaj's avatar Michal Luczaj Committed by Alexei Starovoitov
Browse files

bpf, vsock: Fix poll() missing a queue



When a verdict program simply passes a packet without redirection, sk_msg
is enqueued on sk_psock::ingress_msg. Add a missing check to poll().

Fixes: 634f1a71 ("vsock: support sockmap")
Signed-off-by: default avatarMichal Luczaj <mhal@rbox.co>
Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Reviewed-by: default avatarLuigi Leonardi <leonardi@redhat.com>
Link: https://lore.kernel.org/r/20241118-vsock-bpf-poll-close-v1-1-f1b9669cacdc@rbox.co


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
parent 8618f5ff
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1054,6 +1054,9 @@ static __poll_t vsock_poll(struct file *file, struct socket *sock,
		mask |= EPOLLRDHUP;
	}

	if (sk_is_readable(sk))
		mask |= EPOLLIN | EPOLLRDNORM;

	if (sock->type == SOCK_DGRAM) {
		/* For datagram sockets we can read if there is something in
		 * the queue and write as long as the socket isn't shutdown for