mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [RFC PATCH v1] vsock: check error queue to set EPOLLERR
@ 2023-03-01  5:19 Arseniy Krasnov
  2023-03-02 10:06 ` Stefano Garzarella
  0 siblings, 1 reply; 6+ messages in thread
From: Arseniy Krasnov @ 2023-03-01  5:19 UTC (permalink / raw)
  To: Stefano Garzarella, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni
  Cc: oxffffaa, kernel, avkrasnov, virtualization, netdev, linux-kernel

EPOLLERR must be set not only when there is error on the socket, but also
when error queue of it is not empty (may be it contains some control
messages). Without this patch 'poll()' won't detect data in error queue.
This patch is based on 'tcp_poll()'.

Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
---
 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 19aea7cba26e..b5e51ef4a74c 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -1026,7 +1026,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

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-03-03 12:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-01  5:19 [RFC PATCH v1] vsock: check error queue to set EPOLLERR Arseniy Krasnov
2023-03-02 10:06 ` Stefano Garzarella
2023-03-02 11:41   ` Arseniy Krasnov
2023-03-02 13:38     ` Stefano Garzarella
2023-03-02 15:06       ` Arseniy Krasnov
2023-03-03 12:45         ` Arseniy Krasnov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®