Messages in this thread Patch in this message | | | From | Arseniy Krasnov <> | Subject | [RFC PATCH v5 06/17] vsock: fix EPOLLERR set on non-empty error queue | Date | Sat, 1 Jul 2023 09:22:59 +0300 |
| |
If socket's error queue is not empty, EPOLLERR must be set. Otherwise, reader of error queue won't detect data in it using EPOLLERR bit. Currently for AF_VSOCK this is reproducible only with MSG_ZEROCOPY, as this feature is the only user of an error queue of the socket.
Fixes: d021c344051a ("VSOCK: Introduce VM Sockets") Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru> --- Changelog: v4 -> v5: * Change commit message as Fix patch. Also add details that this problem could be reproduced only with MSG_ZEROCOPY transmission mode.
net/vmw_vsock/af_vsock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index efb8a0937a13..45fd20c4ed50 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -1030,7 +1030,7 @@ static __poll_t vsock_poll(struct file *file, struct socket *sock, poll_wait(file, sk_sleep(sk), wait); mask = 0; - if (sk->sk_err) + if (sk->sk_err || !skb_queue_empty_lockless(&sk->sk_error_queue)) /* Signify that there has been an error on this socket. */ mask |= EPOLLERR; -- 2.25.1
| |