All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] chardev/char-socket: Properly make qio connections non blocking
@ 2020-04-17 12:30 Sai Pavan Boddu
  2020-04-17 13:01 ` Marc-André Lureau
  0 siblings, 1 reply; 4+ messages in thread
From: Sai Pavan Boddu @ 2020-04-17 12:30 UTC (permalink / raw)
  To: Marc-André Lureau, Paolo Bonzini; +Cc: edgari, qemu-devel

In tcp_chr_sync_read function, there is a possibility of socket
disconnection during read, then tcp_chr_hup function would clean up
the qio channel pointers(i.e ioc, sioc).

Signed-off-by: Sai Pavan Boddu <sai.pavan.boddu@xilinx.com>
---
 chardev/char-socket.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 185fe38..30f2b2b 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -549,11 +549,13 @@ static int tcp_chr_sync_read(Chardev *chr, const uint8_t *buf, int len)
 
     qio_channel_set_blocking(s->ioc, true, NULL);
     size = tcp_chr_recv(chr, (void *) buf, len);
-    qio_channel_set_blocking(s->ioc, false, NULL);
     if (size == 0) {
         /* connection closed */
         tcp_chr_disconnect(chr);
+        return 0;
     }
+    /* Connection is good */
+    qio_channel_set_blocking(s->ioc, false, NULL);
 
     return size;
 }
-- 
2.7.4



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

end of thread, other threads:[~2020-04-17 13:38 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-17 12:30 [PATCH] chardev/char-socket: Properly make qio connections non blocking Sai Pavan Boddu
2020-04-17 13:01 ` Marc-André Lureau
2020-04-17 13:13   ` Daniel P. Berrangé
2020-04-17 13:37     ` Sai Pavan Boddu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.