summaryrefslogtreecommitdiffstats
path: root/qemu-char.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2016-02-23 19:10:53 +0100
committerTimothy Pearson <tpearson@raptorengineering.com>2019-11-29 19:49:36 -0600
commit7d126887ed872506a95200ee5efb27e4ca43cef2 (patch)
tree44ed53352a4635b80e11985c33bc3133a3fd2d76 /qemu-char.c
parent037a67877b18835240b15ec310a33f0e2e330d4e (diff)
downloadhqemu-7d126887ed872506a95200ee5efb27e4ca43cef2.zip
hqemu-7d126887ed872506a95200ee5efb27e4ca43cef2.tar.gz
qemu-char: make tcp_chr_disconnect() reentrant-safe
During CHR_EVENT_CLOSED, the function could be reentered, make this case safe. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'qemu-char.c')
-rw-r--r--qemu-char.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/qemu-char.c b/qemu-char.c
index 21e4ca7..26202c3 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2769,6 +2769,10 @@ static void tcp_chr_disconnect(CharDriverState *chr)
{
TCPCharDriver *s = chr->opaque;
+ if (!s->connected) {
+ return;
+ }
+
s->connected = 0;
if (s->listen_ioc) {
s->listen_tag = qio_channel_add_watch(
OpenPOWER on IntegriCloud