Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2196272/?format=api
{ "id": 2196272, "url": "http://patchwork.ozlabs.org/api/patches/2196272/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260213094938.4074478-8-marcandre.lureau@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260213094938.4074478-8-marcandre.lureau@redhat.com>", "list_archive_url": null, "date": "2026-02-13T09:49:26", "name": "[PULL,v2,07/15] chardev: .chr_open(): add boolean return value", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "43f40aebb6502aee2797bb1f058cf52f8b234db5", "submitter": { "id": 66774, "url": "http://patchwork.ozlabs.org/api/people/66774/?format=api", "name": "Marc-André Lureau", "email": "marcandre.lureau@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260213094938.4074478-8-marcandre.lureau@redhat.com/mbox/", "series": [ { "id": 492070, "url": "http://patchwork.ozlabs.org/api/series/492070/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=492070", "date": "2026-02-13T09:49:19", "name": "[PULL,v2,01/15] char-udp: Fix initial backend open status", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/492070/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2196272/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2196272/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=XVppd7Mx;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fC6s64f5Lz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 13 Feb 2026 20:52:10 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vqpor-0007b0-Ug; Fri, 13 Feb 2026 04:50:37 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1vqpoh-000777-O1\n for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:31 -0500", "from us-smtp-delivery-124.mimecast.com ([170.10.133.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <marcandre.lureau@redhat.com>)\n id 1vqpoY-0007IS-Sl\n for qemu-devel@nongnu.org; Fri, 13 Feb 2026 04:50:25 -0500", "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-416-lSjxDuI5MUSzo8WKgT3dYw-1; Fri,\n 13 Feb 2026 04:50:13 -0500", "from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 7593218003F5; Fri, 13 Feb 2026 09:50:07 +0000 (UTC)", "from localhost (unknown [10.44.22.41])\n by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id A2ABB30001B9; Fri, 13 Feb 2026 09:50:06 +0000 (UTC)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1770976217;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=EkOuQwE7r/+vSW05dfY0N0e0q7f2IkqD8VkbkpDWQVE=;\n b=XVppd7MxhpuVWlIVBTlGGdn5080P3qAy6/Adly38HdfVZMxLYw45Get7XjqJ1RuWTxx6u2\n Ip07UR0J1vrGawcJdIkC7QFIrsao6QWxAR/okwlFq/o/Ss+xhT71DwNSJFMrLpv2/7mNBH\n E/5qT3Ii/ddYWIyra9PL3c+dx8Qtp4I=", "X-MC-Unique": "lSjxDuI5MUSzo8WKgT3dYw-1", "X-Mimecast-MFC-AGG-ID": "lSjxDuI5MUSzo8WKgT3dYw_1770976211", "From": "marcandre.lureau@redhat.com", "To": "qemu-devel@nongnu.org", "Cc": "=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n \"Edgar E. Iglesias\" <edgar.iglesias@gmail.com>, =?utf-8?q?Daniel_P=2E_Berra?=\n\t=?utf-8?q?ng=C3=A9?= <berrange@redhat.com>, Eric Blake <eblake@redhat.com>,\n Markus Armbruster <armbru@redhat.com>, Paul Durrant <paul@xen.org>,\n Anthony PERARD <anthony@xenproject.org>, =?utf-8?q?Philippe_Mathieu-Daud?=\n\t=?utf-8?q?=C3=A9?= <philmd@linaro.org>,\n Eduardo Habkost <eduardo@habkost.net>, Paolo Bonzini <pbonzini@redhat.com>,\n\t=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,\n Samuel Thibault <samuel.thibault@ens-lyon.org>,\n Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>", "Subject": "[PULL v2 07/15] chardev: .chr_open(): add boolean return value", "Date": "Fri, 13 Feb 2026 10:49:26 +0100", "Message-ID": "<20260213094938.4074478-8-marcandre.lureau@redhat.com>", "In-Reply-To": "<20260213094938.4074478-1-marcandre.lureau@redhat.com>", "References": "<20260213094938.4074478-1-marcandre.lureau@redhat.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.4", "Received-SPF": "pass client-ip=170.10.133.124;\n envelope-from=marcandre.lureau@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com", "X-Spam_score_int": "-20", "X-Spam_score": "-2.1", "X-Spam_bar": "--", "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "From: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>\n\nAdd boolean return value to follow common recommendations for functions\nwith errrp in include/qapi/error.h\n\nSigned-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>\nReviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>\nReviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>\nMessage-Id: <20260115144606.233252-7-vsementsov@yandex-team.ru>\n---\n include/chardev/char.h | 2 +-\n chardev/baum.c | 5 +++--\n chardev/char-console.c | 3 ++-\n chardev/char-file.c | 13 +++++++------\n chardev/char-hub.c | 11 ++++++-----\n chardev/char-mux.c | 8 +++++---\n chardev/char-null.c | 4 ++--\n chardev/char-parallel.c | 14 ++++++++------\n chardev/char-pipe.c | 12 +++++++-----\n chardev/char-pty.c | 9 ++++++---\n chardev/char-ringbuf.c | 5 +++--\n chardev/char-serial.c | 15 +++++++++------\n chardev/char-socket.c | 17 +++++++++--------\n chardev/char-stdio.c | 11 ++++++-----\n chardev/char-udp.c | 5 +++--\n chardev/char-win-stdio.c | 7 ++++---\n chardev/msmouse.c | 3 ++-\n chardev/spice.c | 12 +++++++-----\n chardev/wctablet.c | 3 ++-\n gdbstub/system.c | 3 ++-\n ui/console-vc.c | 3 ++-\n ui/dbus-chardev.c | 6 +++---\n ui/gtk.c | 5 +++--\n ui/spice-app.c | 10 ++++++----\n ui/vdagent.c | 10 +++++-----\n 25 files changed, 113 insertions(+), 83 deletions(-)", "diff": "diff --git a/include/chardev/char.h b/include/chardev/char.h\nindex aa42e01b8a3..e1bf97222b8 100644\n--- a/include/chardev/char.h\n+++ b/include/chardev/char.h\n@@ -260,7 +260,7 @@ struct ChardevClass {\n void (*chr_parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp);\n \n /* called after construction, open/starts the backend */\n- void (*chr_open)(Chardev *chr, ChardevBackend *backend, Error **errp);\n+ bool (*chr_open)(Chardev *chr, ChardevBackend *backend, Error **errp);\n \n /* write buf to the backend */\n int (*chr_write)(Chardev *s, const uint8_t *buf, int len);\ndiff --git a/chardev/baum.c b/chardev/baum.c\nindex 4b97d630ffb..1219963656b 100644\n--- a/chardev/baum.c\n+++ b/chardev/baum.c\n@@ -642,7 +642,7 @@ static void char_braille_finalize(Object *obj)\n }\n }\n \n-static void baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n BaumChardev *baum = BAUM_CHARDEV(chr);\n brlapi_handle_t *handle;\n@@ -656,7 +656,7 @@ static void baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n brlapi_strerror(brlapi_error_location()));\n g_free(handle);\n baum->brlapi = NULL;\n- return;\n+ return false;\n }\n baum->deferred_init = 0;\n \n@@ -669,6 +669,7 @@ static void baum_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n qemu_set_fd_handler(baum->brlapi_fd, baum_chr_read, NULL, baum);\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void char_braille_class_init(ObjectClass *oc, const void *data)\ndiff --git a/chardev/char-console.c b/chardev/char-console.c\nindex 423f0f4cc4e..0739c9c94a3 100644\n--- a/chardev/char-console.c\n+++ b/chardev/char-console.c\n@@ -26,11 +26,12 @@\n #include \"chardev/char-win.h\"\n #include \"qemu/module.h\"\n \n-static void console_chr_open(Chardev *chr, ChardevBackend *backend,\n+static bool console_chr_open(Chardev *chr, ChardevBackend *backend,\n Error **errp)\n {\n win_chr_set_file(chr, GetStdHandle(STD_OUTPUT_HANDLE), true);\n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void char_console_class_init(ObjectClass *oc, const void *data)\ndiff --git a/chardev/char-file.c b/chardev/char-file.c\nindex 34ef386abc5..b0dd9d5f870 100644\n--- a/chardev/char-file.c\n+++ b/chardev/char-file.c\n@@ -34,7 +34,7 @@\n #include \"chardev/char-fd.h\"\n #endif\n \n-static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevFile *file = backend->u.file.data;\n #ifdef _WIN32\n@@ -44,7 +44,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n \n if (file->in) {\n error_setg(errp, \"input file not supported\");\n- return;\n+ return false;\n }\n \n if (file->has_append && file->append) {\n@@ -61,7 +61,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n FILE_ATTRIBUTE_NORMAL, NULL);\n if (out == INVALID_HANDLE_VALUE) {\n error_setg(errp, \"open %s failed\", file->out);\n- return;\n+ return false;\n }\n \n win_chr_set_file(chr, out, false);\n@@ -77,7 +77,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n \n out = qmp_chardev_open_file_source(file->out, flags, errp);\n if (out < 0) {\n- return;\n+ return false;\n }\n \n if (file->in) {\n@@ -85,7 +85,7 @@ static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n in = qmp_chardev_open_file_source(file->in, flags, errp);\n if (in < 0) {\n qemu_close(out);\n- return;\n+ return false;\n }\n }\n \n@@ -94,11 +94,12 @@ static void file_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (in >= 0) {\n qemu_close(in);\n }\n- return;\n+ return false;\n }\n #endif\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void file_chr_parse(QemuOpts *opts, ChardevBackend *backend,\ndiff --git a/chardev/char-hub.c b/chardev/char-hub.c\nindex aa6058c2f6f..05cf722b5b0 100644\n--- a/chardev/char-hub.c\n+++ b/chardev/char-hub.c\n@@ -203,7 +203,7 @@ static void hub_chr_update_read_handlers(Chardev *chr)\n }\n }\n \n-static void hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevHub *hub = backend->u.hub.data;\n HubChardev *d = HUB_CHARDEV(chr);\n@@ -213,7 +213,7 @@ static void hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n \n if (list == NULL) {\n error_setg(errp, \"hub: 'chardevs' list is not defined\");\n- return;\n+ return false;\n }\n \n while (list) {\n@@ -223,17 +223,17 @@ static void hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (s == NULL) {\n error_setg(errp, \"hub: chardev can't be found by id '%s'\",\n list->value);\n- return;\n+ return false;\n }\n if (CHARDEV_IS_HUB(s) || CHARDEV_IS_MUX(s)) {\n error_setg(errp, \"hub: multiplexers and hub devices can't be \"\n \"stacked, check chardev '%s', chardev should not \"\n \"be a hub device or have 'mux=on' enabled\",\n list->value);\n- return;\n+ return false;\n }\n if (!hub_chr_attach_chardev(d, s, errp)) {\n- return;\n+ return false;\n }\n list = list->next;\n }\n@@ -242,6 +242,7 @@ static void hub_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n * Closed until an explicit event from backend, so we don't\n * send CHR_EVENT_OPENED now.\n */\n+ return true;\n }\n \n static void hub_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp)\ndiff --git a/chardev/char-mux.c b/chardev/char-mux.c\nindex 7210df431fc..881443d869d 100644\n--- a/chardev/char-mux.c\n+++ b/chardev/char-mux.c\n@@ -361,7 +361,7 @@ void mux_set_focus(Chardev *chr, unsigned int focus)\n mux_chr_send_event(d, d->focus, CHR_EVENT_MUX_IN);\n }\n \n-static void mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevMux *mux = backend->u.mux.data;\n Chardev *drv;\n@@ -370,12 +370,12 @@ static void mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n drv = qemu_chr_find(mux->chardev);\n if (drv == NULL) {\n error_setg(errp, \"mux: base chardev %s not found\", mux->chardev);\n- return;\n+ return false;\n }\n \n d->focus = -1;\n if (!qemu_chr_fe_init(&d->chr, drv, errp)) {\n- return;\n+ return false;\n }\n \n /*\n@@ -385,6 +385,8 @@ static void mux_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (muxes_opened) {\n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n }\n+\n+ return true;\n }\n \n static void mux_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp)\ndiff --git a/chardev/char-null.c b/chardev/char-null.c\nindex 900b5febb6c..d5a101178bb 100644\n--- a/chardev/char-null.c\n+++ b/chardev/char-null.c\n@@ -26,9 +26,9 @@\n #include \"chardev/char.h\"\n #include \"qemu/module.h\"\n \n-static void null_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool null_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n- /* do not send CHR_EVENT_OPENED */\n+ return true;\n }\n \n static void char_null_class_init(ObjectClass *oc, const void *data)\ndiff --git a/chardev/char-parallel.c b/chardev/char-parallel.c\nindex 359efa3c9c8..cbf87e660da 100644\n--- a/chardev/char-parallel.c\n+++ b/chardev/char-parallel.c\n@@ -157,7 +157,7 @@ static int parallel_chr_ioctl(Chardev *chr, int cmd, void *arg)\n return 0;\n }\n \n-static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp)\n+static bool parallel_chr_open_fd(Chardev *chr, int fd, Error **errp)\n {\n ParallelChardev *drv = PARALLEL_CHARDEV(chr);\n \n@@ -165,11 +165,12 @@ static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp)\n \n if (ioctl(fd, PPCLAIM) < 0) {\n error_setg_errno(errp, errno, \"not a parallel port\");\n- return;\n+ return false;\n }\n \n drv->mode = IEEE1284_MODE_COMPAT;\n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n #endif /* __linux__ */\n \n@@ -225,15 +226,16 @@ static int parallel_chr_ioctl(Chardev *chr, int cmd, void *arg)\n return 0;\n }\n \n-static void parallel_chr_open_fd(Chardev *chr, int fd, Error **errp)\n+static bool parallel_chr_open_fd(Chardev *chr, int fd, Error **errp)\n {\n ParallelChardev *drv = PARALLEL_CHARDEV(chr);\n drv->fd = fd;\n+ return true;\n }\n #endif\n \n #ifdef HAVE_CHARDEV_PARALLEL\n-static void parallel_chr_open(Chardev *chr,\n+static bool parallel_chr_open(Chardev *chr,\n ChardevBackend *backend,\n Error **errp)\n {\n@@ -242,9 +244,9 @@ static void parallel_chr_open(Chardev *chr,\n \n fd = qmp_chardev_open_file_source(parallel->device, O_RDWR, errp);\n if (fd < 0) {\n- return;\n+ return false;\n }\n- parallel_chr_open_fd(chr, fd, errp);\n+ return parallel_chr_open_fd(chr, fd, errp);\n }\n \n static void parallel_chr_parse(QemuOpts *opts, ChardevBackend *backend,\ndiff --git a/chardev/char-pipe.c b/chardev/char-pipe.c\nindex 2f26372dfc9..472b3e0801f 100644\n--- a/chardev/char-pipe.c\n+++ b/chardev/char-pipe.c\n@@ -103,21 +103,22 @@ static int win_chr_pipe_init(Chardev *chr, const char *filename,\n return -1;\n }\n \n-static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevHostdev *opts = backend->u.pipe.data;\n const char *filename = opts->device;\n \n if (win_chr_pipe_init(chr, filename, errp) < 0) {\n- return;\n+ return false;\n }\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n #else\n \n-static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevHostdev *opts = backend->u.pipe.data;\n int fd_in, fd_out;\n@@ -143,7 +144,7 @@ static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n );\n if (fd_in < 0) {\n error_setg_file_open(errp, errno, filename);\n- return;\n+ return false;\n }\n }\n \n@@ -152,10 +153,11 @@ static void pipe_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (fd_out != fd_in) {\n close(fd_out);\n }\n- return;\n+ return false;\n }\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n #endif /* !_WIN32 */\ndiff --git a/chardev/char-pty.c b/chardev/char-pty.c\nindex d4d69a29a95..9e26e97baf5 100644\n--- a/chardev/char-pty.c\n+++ b/chardev/char-pty.c\n@@ -331,7 +331,7 @@ static int qemu_openpty_raw(int *aslave, char *pty_name)\n return amaster;\n }\n \n-static void pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n PtyChardev *s;\n int master_fd, slave_fd;\n@@ -342,13 +342,13 @@ static void pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n master_fd = qemu_openpty_raw(&slave_fd, pty_name);\n if (master_fd < 0) {\n error_setg_errno(errp, errno, \"Failed to create PTY\");\n- return;\n+ return false;\n }\n \n close(slave_fd);\n if (!qemu_set_blocking(master_fd, false, errp)) {\n close(master_fd);\n- return;\n+ return false;\n }\n \n chr->filename = g_strdup_printf(\"pty:%s\", pty_name);\n@@ -368,10 +368,13 @@ static void pty_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n \n if (res != 0) {\n error_setg_errno(errp, errno, \"Failed to create PTY symlink\");\n+ return false;\n } else {\n s->path = g_strdup(path);\n }\n }\n+\n+ return true;\n }\n \n static void pty_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp)\ndiff --git a/chardev/char-ringbuf.c b/chardev/char-ringbuf.c\nindex 30b17a96d3a..8f998d26a49 100644\n--- a/chardev/char-ringbuf.c\n+++ b/chardev/char-ringbuf.c\n@@ -92,7 +92,7 @@ static void char_ringbuf_finalize(Object *obj)\n g_free(d->cbuf);\n }\n \n-static void ringbuf_chr_open(Chardev *chr,\n+static bool ringbuf_chr_open(Chardev *chr,\n ChardevBackend *backend,\n Error **errp)\n {\n@@ -104,7 +104,7 @@ static void ringbuf_chr_open(Chardev *chr,\n /* The size must be power of 2 */\n if (d->size & (d->size - 1)) {\n error_setg(errp, \"size of ringbuf chardev must be power of two\");\n- return;\n+ return false;\n }\n \n d->prod = 0;\n@@ -112,6 +112,7 @@ static void ringbuf_chr_open(Chardev *chr,\n d->cbuf = g_malloc0(d->size);\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n void qmp_ringbuf_write(const char *device, const char *data,\ndiff --git a/chardev/char-serial.c b/chardev/char-serial.c\nindex 9995f184258..0c73bafc545 100644\n--- a/chardev/char-serial.c\n+++ b/chardev/char-serial.c\n@@ -41,15 +41,17 @@\n \n #ifdef _WIN32\n \n-static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool serial_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevHostdev *serial = backend->u.serial.data;\n int ret = win_chr_serial_init(chr, serial->device, errp);\n if (ret < 0) {\n- return;\n+ return false;\n }\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+\n+ return true;\n }\n \n #elif defined(__linux__) || defined(__sun__) || defined(__FreeBSD__) \\\n@@ -259,7 +261,7 @@ static int serial_chr_ioctl(Chardev *chr, int cmd, void *arg)\n return 0;\n }\n \n-static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool serial_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevHostdev *serial = backend->u.serial.data;\n int fd;\n@@ -267,20 +269,21 @@ static void serial_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n fd = qmp_chardev_open_file_source(serial->device, O_RDWR | O_NONBLOCK,\n errp);\n if (fd < 0) {\n- return;\n+ return false;\n }\n if (!qemu_set_blocking(fd, false, errp)) {\n close(fd);\n- return;\n+ return false;\n }\n tty_serial_init(fd, 115200, 'N', 8, 1);\n \n if (!qemu_chr_open_fd(chr, fd, fd, errp)) {\n close(fd);\n- return;\n+ return false;\n }\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n #endif /* __linux__ || __sun__ */\n \ndiff --git a/chardev/char-socket.c b/chardev/char-socket.c\nindex 2951b2ec9be..908bbdbc124 100644\n--- a/chardev/char-socket.c\n+++ b/chardev/char-socket.c\n@@ -1365,7 +1365,7 @@ static bool qmp_chardev_validate_socket(ChardevSocket *sock,\n }\n \n \n-static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n SocketChardev *s = SOCKET_CHARDEV(chr);\n ChardevSocket *sock = backend->u.socket.data;\n@@ -1390,7 +1390,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (!creds) {\n error_setg(errp, \"No TLS credentials with id '%s'\",\n sock->tls_creds);\n- return;\n+ return false;\n }\n s->tls_creds = (QCryptoTLSCreds *)\n object_dynamic_cast(creds,\n@@ -1398,7 +1398,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (!s->tls_creds) {\n error_setg(errp, \"Object with id '%s' is not TLS credentials\",\n sock->tls_creds);\n- return;\n+ return false;\n }\n object_ref(OBJECT(s->tls_creds));\n if (!qcrypto_tls_creds_check_endpoint(s->tls_creds,\n@@ -1406,7 +1406,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n ? QCRYPTO_TLS_CREDS_ENDPOINT_SERVER\n : QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT,\n errp)) {\n- return;\n+ return false;\n }\n }\n s->tls_authz = g_strdup(sock->tls_authz);\n@@ -1414,7 +1414,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n s->addr = addr = socket_address_flatten(sock->addr);\n \n if (!qmp_chardev_validate_socket(sock, addr, errp)) {\n- return;\n+ return false;\n }\n \n qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_RECONNECTABLE);\n@@ -1431,7 +1431,7 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n */\n if (!chr->handover_yank_instance) {\n if (!yank_register_instance(CHARDEV_YANK_INSTANCE(chr->label), errp)) {\n- return;\n+ return false;\n }\n }\n s->registered_yank = true;\n@@ -1441,15 +1441,16 @@ static void tcp_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n if (s->is_listen) {\n if (qmp_chardev_open_socket_server(chr, is_telnet || is_tn3270,\n is_waitconnect, errp) < 0) {\n- return;\n+ return false;\n }\n } else {\n if (qmp_chardev_open_socket_client(chr, reconnect_ms, errp) < 0) {\n- return;\n+ return false;\n }\n }\n \n /* be isn't opened until we get a connection */\n+ return true;\n }\n \n static void tcp_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp)\ndiff --git a/chardev/char-stdio.c b/chardev/char-stdio.c\nindex 534f6ed5658..fe1cbb2d880 100644\n--- a/chardev/char-stdio.c\n+++ b/chardev/char-stdio.c\n@@ -85,19 +85,19 @@ static void term_stdio_handler(int sig)\n stdio_chr_set_echo(NULL, stdio_echo_state);\n }\n \n-static void stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevStdio *opts = backend->u.stdio.data;\n struct sigaction act;\n \n if (is_daemonized()) {\n error_setg(errp, \"cannot use stdio with -daemonize\");\n- return;\n+ return false;\n }\n \n if (stdio_in_use) {\n error_setg(errp, \"cannot use stdio by multiple character devices\");\n- return;\n+ return false;\n }\n \n stdio_in_use = true;\n@@ -105,11 +105,11 @@ static void stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n old_fd1_flags = fcntl(1, F_GETFL);\n tcgetattr(0, &oldtty);\n if (!qemu_set_blocking(0, false, errp)) {\n- return;\n+ return false;\n }\n \n if (!qemu_chr_open_fd(chr, 0, 1, errp)) {\n- return;\n+ return false;\n }\n \n atexit(term_exit);\n@@ -122,6 +122,7 @@ static void stdio_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n stdio_chr_set_echo(chr, false);\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n #endif\n \ndiff --git a/chardev/char-udp.c b/chardev/char-udp.c\nindex 4c81c95e656..423000832ff 100644\n--- a/chardev/char-udp.c\n+++ b/chardev/char-udp.c\n@@ -188,7 +188,7 @@ static void udp_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp)\n }\n }\n \n-static void upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevUdp *udp = backend->u.udp.data;\n SocketAddress *local_addr = socket_address_flatten(udp->local);\n@@ -203,7 +203,7 @@ static void upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n qapi_free_SocketAddress(remote_addr);\n if (ret < 0) {\n object_unref(OBJECT(sioc));\n- return;\n+ return false;\n }\n \n name = g_strdup_printf(\"chardev-udp-%s\", chr->label);\n@@ -212,6 +212,7 @@ static void upd_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n \n s->ioc = QIO_CHANNEL(sioc);\n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void char_udp_class_init(ObjectClass *oc, const void *data)\ndiff --git a/chardev/char-win-stdio.c b/chardev/char-win-stdio.c\nindex 0535960ff1b..bb9c195a8b1 100644\n--- a/chardev/char-win-stdio.c\n+++ b/chardev/char-win-stdio.c\n@@ -142,7 +142,7 @@ static void win_stiod_chr_set_echo(Chardev *chr, bool echo)\n }\n }\n \n-static void win_stdio_chr_open(Chardev *chr,\n+static bool win_stdio_chr_open(Chardev *chr,\n ChardevBackend *backend,\n Error **errp)\n {\n@@ -155,7 +155,7 @@ static void win_stdio_chr_open(Chardev *chr,\n stdio->hStdIn = GetStdHandle(STD_INPUT_HANDLE);\n if (stdio->hStdIn == INVALID_HANDLE_VALUE) {\n error_setg(errp, \"cannot open stdio: invalid handle\");\n- return;\n+ return false;\n }\n \n is_console = GetConsoleMode(stdio->hStdIn, &dwMode) != 0;\n@@ -208,7 +208,7 @@ static void win_stdio_chr_open(Chardev *chr,\n win_stiod_chr_set_echo(chr, false);\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n- return;\n+ return true;\n \n err3:\n qemu_del_wait_object(stdio->hInputReadyEvent, NULL, NULL);\n@@ -217,6 +217,7 @@ err2:\n CloseHandle(stdio->hInputDoneEvent);\n err1:\n qemu_del_wait_object(stdio->hStdIn, NULL, NULL);\n+ return false;\n }\n \n static void char_win_stdio_finalize(Object *obj)\ndiff --git a/chardev/msmouse.c b/chardev/msmouse.c\nindex 9dc04e3b3ec..365f04546e9 100644\n--- a/chardev/msmouse.c\n+++ b/chardev/msmouse.c\n@@ -253,7 +253,7 @@ static void char_msmouse_finalize(Object *obj)\n fifo8_destroy(&mouse->outbuf);\n }\n \n-static void msmouse_chr_open(Chardev *chr,\n+static bool msmouse_chr_open(Chardev *chr,\n ChardevBackend *backend,\n Error **errp)\n {\n@@ -265,6 +265,7 @@ static void msmouse_chr_open(Chardev *chr,\n fifo8_create(&mouse->outbuf, MSMOUSE_BUF_SZ);\n \n /* Never send CHR_EVENT_OPENED */\n+ return true;\n }\n \n static void char_msmouse_class_init(ObjectClass *oc, const void *data)\ndiff --git a/chardev/spice.c b/chardev/spice.c\nindex f5b1f585eb1..ad97d98ac6b 100644\n--- a/chardev/spice.c\n+++ b/chardev/spice.c\n@@ -251,7 +251,7 @@ static void chr_open(Chardev *chr, const char *subtype)\n s->sin.subtype = g_strdup(subtype);\n }\n \n-static void spice_vmc_chr_open(Chardev *chr, ChardevBackend *backend,\n+static bool spice_vmc_chr_open(Chardev *chr, ChardevBackend *backend,\n Error **errp)\n {\n ChardevSpiceChannel *spicevmc = backend->u.spicevmc.data;\n@@ -272,13 +272,14 @@ static void spice_vmc_chr_open(Chardev *chr, ChardevBackend *backend,\n subtypes);\n \n g_free(subtypes);\n- return;\n+ return false;\n }\n \n chr_open(chr, type);\n+ return true;\n }\n \n-static void spice_port_chr_open(Chardev *chr, ChardevBackend *backend,\n+static bool spice_port_chr_open(Chardev *chr, ChardevBackend *backend,\n Error **errp)\n {\n ChardevSpicePort *spiceport = backend->u.spiceport.data;\n@@ -287,12 +288,12 @@ static void spice_port_chr_open(Chardev *chr, ChardevBackend *backend,\n \n if (name == NULL) {\n error_setg(errp, \"missing name parameter\");\n- return;\n+ return false;\n }\n \n if (!using_spice) {\n error_setg(errp, \"spice not enabled\");\n- return;\n+ return false;\n }\n \n chr_open(chr, \"port\");\n@@ -301,6 +302,7 @@ static void spice_port_chr_open(Chardev *chr, ChardevBackend *backend,\n s->sin.portname = g_strdup(name);\n \n vmc_register_interface(s);\n+ return true;\n }\n \n static void spice_vmc_chr_parse(QemuOpts *opts, ChardevBackend *backend,\ndiff --git a/chardev/wctablet.c b/chardev/wctablet.c\nindex 65b2ceb58c9..214d5ca2e28 100644\n--- a/chardev/wctablet.c\n+++ b/chardev/wctablet.c\n@@ -324,7 +324,7 @@ static void wctablet_chr_finalize(Object *obj)\n }\n }\n \n-static void wctablet_chr_open(Chardev *chr,\n+static bool wctablet_chr_open(Chardev *chr,\n ChardevBackend *backend,\n Error **errp)\n {\n@@ -339,6 +339,7 @@ static void wctablet_chr_open(Chardev *chr,\n &wctablet_handler);\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void wctablet_chr_class_init(ObjectClass *oc, const void *data)\ndiff --git a/gdbstub/system.c b/gdbstub/system.c\nindex 982857f314a..e86c5870abc 100644\n--- a/gdbstub/system.c\n+++ b/gdbstub/system.c\n@@ -233,9 +233,10 @@ static int gdb_chr_write(Chardev *chr, const uint8_t *buf, int len)\n return len;\n }\n \n-static void gdb_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool gdb_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n /* Never send CHR_EVENT_OPENED */\n+ return true;\n }\n \n static void char_gdb_class_init(ObjectClass *oc, const void *data)\ndiff --git a/ui/console-vc.c b/ui/console-vc.c\nindex 4c8ea4c1485..f22806fed79 100644\n--- a/ui/console-vc.c\n+++ b/ui/console-vc.c\n@@ -1093,7 +1093,7 @@ void qemu_text_console_update_size(QemuTextConsole *c)\n dpy_text_resize(QEMU_CONSOLE(c), c->width, c->height);\n }\n \n-static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ChardevVC *vc = backend->u.vc.data;\n VCChardev *drv = VC_CHARDEV(chr);\n@@ -1142,6 +1142,7 @@ static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n }\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void vc_chr_parse(QemuOpts *opts, ChardevBackend *backend, Error **errp)\ndiff --git a/ui/dbus-chardev.c b/ui/dbus-chardev.c\nindex 3e471f84cd8..9442b475517 100644\n--- a/ui/dbus-chardev.c\n+++ b/ui/dbus-chardev.c\n@@ -176,7 +176,7 @@ dbus_chr_send_break(\n return DBUS_METHOD_INVOCATION_HANDLED;\n }\n \n-static void dbus_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool dbus_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n ERRP_GUARD();\n \n@@ -206,9 +206,9 @@ static void dbus_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_parse(\n opts, be, errp);\n if (*errp) {\n- return;\n+ return false;\n }\n- CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_open(\n+ return CHARDEV_CLASS(object_class_by_name(TYPE_CHARDEV_SOCKET))->chr_open(\n chr, be, errp);\n }\n \ndiff --git a/ui/gtk.c b/ui/gtk.c\nindex 44b2b868ec9..9ebe7e8df0d 100644\n--- a/ui/gtk.c\n+++ b/ui/gtk.c\n@@ -1963,11 +1963,11 @@ static void gd_vc_chr_set_echo(Chardev *chr, bool echo)\n \n static int nb_vcs;\n static Chardev *vcs[MAX_VCS];\n-static void gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n if (nb_vcs == MAX_VCS) {\n error_setg(errp, \"Maximum number of consoles reached\");\n- return;\n+ return false;\n }\n \n vcs[nb_vcs++] = chr;\n@@ -1976,6 +1976,7 @@ static void gd_vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n * console/chardev init sometimes completes elsewhere in a 2nd\n * stage, so defer OPENED events until they are fully initialized\n */\n+ return true;\n }\n \n static void char_gd_vc_class_init(ObjectClass *oc, const void *data)\ndiff --git a/ui/spice-app.c b/ui/spice-app.c\nindex 7ac9ae4e78d..9e55f273715 100644\n--- a/ui/spice-app.c\n+++ b/ui/spice-app.c\n@@ -49,7 +49,7 @@ struct VCChardev {\n \n struct VCChardevClass {\n ChardevClass parent;\n- void (*parent_open)(Chardev *chr, ChardevBackend *backend, Error **errp);\n+ bool (*parent_init)(Chardev *chr, ChardevBackend *backend, Error **errp);\n };\n \n #define TYPE_CHARDEV_VC \"chardev-vc\"\n@@ -66,11 +66,12 @@ chr_spice_backend_new(void)\n return be;\n }\n \n-static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n+static bool vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n {\n VCChardevClass *vc = CHARDEV_VC_GET_CLASS(chr);\n ChardevBackend *be;\n const char *fqdn = NULL;\n+ bool ok;\n \n if (strstart(chr->label, \"serial\", NULL)) {\n fqdn = \"org.qemu.console.serial.0\";\n@@ -83,8 +84,9 @@ static void vc_chr_open(Chardev *chr, ChardevBackend *backend, Error **errp)\n be = chr_spice_backend_new();\n be->u.spiceport.data->fqdn = fqdn ?\n g_strdup(fqdn) : g_strdup_printf(\"org.qemu.console.%s\", chr->label);\n- vc->parent_open(chr, be, errp);\n+ ok = vc->parent_init(chr, be, errp);\n qapi_free_ChardevBackend(be);\n+ return ok;\n }\n \n static void vc_chr_set_echo(Chardev *chr, bool echo)\n@@ -102,7 +104,7 @@ static void char_vc_class_init(ObjectClass *oc, const void *data)\n VCChardevClass *vc = CHARDEV_VC_CLASS(oc);\n ChardevClass *cc = CHARDEV_CLASS(oc);\n \n- vc->parent_open = cc->chr_open;\n+ vc->parent_init = cc->chr_open;\n \n cc->chr_parse = vc_chr_parse;\n cc->chr_open = vc_chr_open;\ndiff --git a/ui/vdagent.c b/ui/vdagent.c\nindex 644e9acaaeb..7ff0861f3e9 100644\n--- a/ui/vdagent.c\n+++ b/ui/vdagent.c\n@@ -660,8 +660,7 @@ static void vdagent_chr_recv_clipboard(VDAgentChardev *vd, VDAgentMessage *msg)\n /* ------------------------------------------------------------------ */\n /* chardev backend */\n \n-static void vdagent_chr_open(Chardev *chr,\n- ChardevBackend *backend,\n+static bool vdagent_chr_open(Chardev *chr, ChardevBackend *backend,\n Error **errp)\n {\n VDAgentChardev *vd = QEMU_VDAGENT_CHARDEV(chr);\n@@ -673,7 +672,7 @@ static void vdagent_chr_open(Chardev *chr,\n * so we have to byteswap everything on BE hosts.\n */\n error_setg(errp, \"vdagent is not supported on bigendian hosts\");\n- return;\n+ return false;\n #endif\n \n vd->mouse = VDAGENT_MOUSE_DEFAULT;\n@@ -692,6 +691,7 @@ static void vdagent_chr_open(Chardev *chr,\n }\n \n qemu_chr_be_event(chr, CHR_EVENT_OPENED);\n+ return true;\n }\n \n static void vdagent_clipboard_peer_register(VDAgentChardev *vd)\n@@ -1074,7 +1074,7 @@ static const VMStateDescription vmstate_vdagent = {\n }\n };\n \n-static void vdagent_chr_init(Object *obj)\n+static void vdagent_chr_instance_init(Object *obj)\n {\n VDAgentChardev *vd = QEMU_VDAGENT_CHARDEV(obj);\n \n@@ -1097,7 +1097,7 @@ static const TypeInfo vdagent_chr_type_info = {\n .name = TYPE_CHARDEV_QEMU_VDAGENT,\n .parent = TYPE_CHARDEV,\n .instance_size = sizeof(VDAgentChardev),\n- .instance_init = vdagent_chr_init,\n+ .instance_init = vdagent_chr_instance_init,\n .instance_finalize = vdagent_chr_fini,\n .class_init = vdagent_chr_class_init,\n };\n", "prefixes": [ "PULL", "v2", "07/15" ] }