[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 15/40] ivshmem: Don't destroy the chardev on version
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 15/40] ivshmem: Don't destroy the chardev on version mismatch |
Date: |
Fri, 18 Mar 2016 18:01:02 +0100 |
Yes, the chardev is commonly useless after we read a bad version from
it, but destroying it is inappropriate anyway: the user created it, so
the user should be able to hold on to it as long as he likes. We
don't destroy it on other errors. Screwed up in commit 5105b1d.
Stop reading instead.
Also note QEMU's behavior in ivshmem-spec.txt.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Message-Id: <address@hidden>
---
docs/specs/ivshmem-spec.txt | 3 +++
hw/misc/ivshmem.c | 3 +--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/docs/specs/ivshmem-spec.txt b/docs/specs/ivshmem-spec.txt
index 0e9185a..0cd63ad 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 8356399..0ac0238 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;
}
--
2.4.3
- [Qemu-devel] [PULL 00/40] ivshmem: Fixes, cleanups, device model split, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 12/40] ivshmem: Compile debug prints unconditionally to prevent bit-rot, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 07/40] ivshmem-test: Improve test case /ivshmem/single, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 09/40] ivshmem-test: Improve test cases /ivshmem/server-*, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 06/40] tests/libqos/pci-pc: Fix qpci_pc_iomap() to map BARs aligned, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 03/40] ivshmem-server: Don't overload POSIX shmem and file name, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 08/40] ivshmem-test: Clean up wait for devices to become operational, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 01/40] target-ppc: Document TOCTTOU in hugepage support, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 05/40] event_notifier: Make event_notifier_init_fd() #ifdef CONFIG_EVENTFD, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 15/40] ivshmem: Don't destroy the chardev on version mismatch,
Markus Armbruster <=
- [Qemu-devel] [PULL 11/40] ivshmem: Add missing newlines to debug printfs, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 22/40] ivshmem: Simplify rejection of invalid peer ID from server, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 18/40] ivshmem: Clean up register callbacks, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 14/40] ivshmem: Drop ivshmem_event() stub, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 24/40] ivshmem: Plug leaks on unplug, fix peer disconnect, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 38/40] ivshmem: Drop ivshmem property x-memdev, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 20/40] ivshmem: Leave INTx alone when using MSI-X, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 39/40] ivshmem: Require master to have ID zero, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 33/40] ivshmem: Inline check_shm_size() into its only caller, Markus Armbruster, 2016/03/18
- [Qemu-devel] [PULL 26/40] ivshmem: Propagate errors through ivshmem_recv_setup(), Markus Armbruster, 2016/03/18