aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/specs/ivshmem-spec.txt3
-rw-r--r--hw/misc/ivshmem.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/docs/specs/ivshmem-spec.txt b/docs/specs/ivshmem-spec.txt
index 0e9185a04b..0cd63adff0 100644
--- a/docs/specs/ivshmem-spec.txt
+++ b/docs/specs/ivshmem-spec.txt
@@ -187,6 +187,9 @@ Each message consists of a single 8 byte little-endian signed number,
and may be accompanied by a file descriptor via SCM_RIGHTS. Both
client and server close the connection on error.
+Note: QEMU currently doesn't close the connection right on error, but
+only when the character device is destroyed.
+
On connect, the server sends the following messages in order:
1. The protocol version number, currently zero. The client should
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index 8356399092..0ac0238c7f 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -708,8 +708,7 @@ static void ivshmem_check_version(void *opaque, const uint8_t * buf, int size)
if (tmp != -1 || version != IVSHMEM_PROTOCOL_VERSION) {
fprintf(stderr, "incompatible version, you are connecting to a ivshmem-"
"server using a different protocol please check your setup\n");
- qemu_chr_delete(s->server_chr);
- s->server_chr = NULL;
+ qemu_chr_add_handlers(s->server_chr, NULL, NULL, NULL, s);
return;
}