diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2016-02-23 19:10:53 +0100 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-11-29 19:49:36 -0600 |
commit | 7d126887ed872506a95200ee5efb27e4ca43cef2 (patch) | |
tree | 44ed53352a4635b80e11985c33bc3133a3fd2d76 | |
parent | 037a67877b18835240b15ec310a33f0e2e330d4e (diff) | |
download | hqemu-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>
-rw-r--r-- | qemu-char.c | 4 |
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( |