From nobody Sat May 4 21:24:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1616780378; cv=none; d=zohomail.com; s=zohoarc; b=Myqf1YiNxGYk7QM8pR4dM0D2/aEbALp0UJ+bM+c4FF+nfJC0tEJT0quZ7pjdXQXSWNxf+Oz1cAzy1pgZQtzBsWHa4B6uZYrOGnnTd2z7RfK+6x1UjTamoDzPXTn8WkE4fxLPA/YkEmf3l08vb5o1NBvGq1PWT5aLFh7+m6L4A4A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616780378; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8VfIYvPUe+OsVLUGJ0PYLTBj+jpgwaF8hYsJbkxe0Ek=; b=YTx9q8s9uz81lynEfqQKLhUj1Lr7qdDVu84wMEGPeZSRv0ZRT80DtnuEDjqlBcIdsWYejDbCfq9UwA1lfW0NfekQRb0t0R/LV+OiQnc39y6MHVtrI+V4OAFbN8Jt1p7ZyEwiE+K0380GLQde0udJ2UxKlqQk/+/8c1IJKpWpDOc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616780378487759.2112528820452; Fri, 26 Mar 2021 10:39:38 -0700 (PDT) Received: from localhost ([::1]:38260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPqQr-0001Nb-69 for importer@patchew.org; Fri, 26 Mar 2021 13:39:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44316) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMW-0005Gx-O4 for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:08 -0400 Received: from mout.web.de ([212.227.17.12]:45159) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMR-0004So-6z for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:08 -0400 Received: from gecko.fritz.box ([89.247.255.242]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N5lnF-1ljZz53elH-016kpB; Fri, 26 Mar 2021 18:35:00 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616780101; bh=yt0UMy2seKBXZxq/MjRn7d1+kwt5Ib7BhGGKWTAL6Bo=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=YqWIyQs2ZgtvWPz6oKQyZdtHl0PKDEhcq5CNjyDfgyIOFpGdzswLS69p68kVVZhDV 4o1mEu/Kc48HR1Kayrio2nSekGVBTDMWi9hQBrC8+JL+0IzNvXTSVk2ZK/Uxc6hh/j r+NUMM7Ha9JgH3GAa9VEcl5KDbIQzboF3tdpn0vU= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 26 Mar 2021 18:34:59 +0100 From: Lukas Straub To: Peter Maydell Subject: [PULL 1/6] yank: Remove dependency on qiochannel Message-ID: <19be51edbb4a213baa1716fa79f7071475d1a9c0.1616779714.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/feoX5V9sdPIrnLO49g2BSEQ"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:0kKx1P1WMThP/MsS3FKQez+ttLjyWvTbGULiQ6D8dRKHoS9Ytgq XZqlQyodV/XHD5DG6x9P51QGW5KZgcssqNQK9HRu4Y0/SU9t3Jghu+Zy5+efxdGqKb+hZvq AXLmubOwtoUQFjwZfumcmn5oAdVyebrl8krRDe3Z8Aq8kl4Fs3V423icstRmlk4XwnOQ9xL akSAoI2eckkErEt6wnHBw== X-UI-Out-Filterresults: notjunk:1;V03:K0:KXJnE9v0q4U=:0RGNqwkdXSAwwfZwktfgBg xNvE6wYciIRTcUoCdFLWN+bg+oPrXQGp0j1exaV5S81Wg1gV6Lb1PjLiWqrcFhvYpWG8CElp+ 7vNhfuNLW4imUtGUmwLKMgDXD1l0z30gkFZfVV54IQmAMfqgVMkb6v8W6KoWH3VW/ws5H4otG g8CjS2JVr07LLDYjxFHukXNt08sgHk2BDRO8WOfbXdgCOA6tiqeK9SjZnwIGRUnkzc7gKjJlO SQJuPbI6DWlRu4OoxiLDQ4iwuv/Mcd0D55ZjkZ9RjEotYD7xd3NSGSaAu0wiyNA89Ir8ZHTi7 HEEsZ3YHOAmICRt/oA1Zl6i910FCdbF/N8t/XtlflJGMBV/ZSJaZLSlkiITemIWFkMUmQaagU UAECaBsFpUveYnwNkNSfatomMsE1sDtTzRxAmNtOyT0e8ZCiBOFli56qf6C3DTYTVumsuIig4 NTX+IOzCEYE2ExwnlUxtw7zmUMhKUfe97311+maYE2DJkwELS58NpIZlbqHClIezbiu7zShxu T5WOiaoLnF6v+hHuSUA/ihHx/AQKJ+zz9EAWlMWMrJeJq0i3/0vLsEYcs8OxUYRmYj+UmEE2c e4kgHJereaQgj+PTahi/y+wsPGsg2IPepPSJH/oG2D5C1t/IWKYH7u3QsOtvkwKru2pkJUBj9 WcDxFc2vG1QulAg1q0If9vMJjfA9PBlyQcTP9IiBk9JTKs7Xz3FaPNJgF10dScLOJmqgPUrbP f3GsWWSzi6fstYuh0tz34YoFiWZNcw5XnqPzpJxZBz4v1wLm5nKUjSrd1q3PAj8S6+eNBUj7u eys/BtLJmT4DJLmjccBWKddH0N0edFM35Ty65Ikl7NnDrPUN/Sakk/A2vJSqmBwbh/ZPkN90v feSR3NRT6T1zzERSvI+JZ9X1xRIlBXPd0+5U0LAn3cjxod4ODZVaqFrgKF69ABpc/+tyyg9u9 PjjasBaFuiyCoy065KE2rrznvJtHDTnfAi99XfsM1lEUEOi/g1xGSO5DapjwpCiqZC69XZsvD /gO6Egp9rCE2fgLnE+ErrrZ7jVZ2DR75fOOYSys1YLkIyst8/141t01jfXCi7vLGt+AhFGdw1 n7lKQkgAyz1BQSOQ2Yk2Co+nQ4kMdaPzU9BeOdDl/BVsUqMZSu+Rd+qlBBJt3pwwnLqSPwC75 h7M9GUX+r8Uc8DzWqcXieRhfRPWnfasy8Wvc70378GaE7cJ1I3xy4VJjyJz/hYHMIe9NZdgnO mjASg18DKwipGuDl2 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @web.de) --Sig_/feoX5V9sdPIrnLO49g2BSEQ Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Remove dependency on qiochannel by removing yank_generic_iochannel and letting migration and chardev use their own yank function for iochannel. Signed-off-by: Lukas Straub Reviewed-by: Thomas Huth Reviewed-by: Marc-Andr=C3=A9 Lureau --- MAINTAINERS | 1 + chardev/char-socket.c | 21 ++++++++++++++------- include/qemu/yank.h | 10 ---------- migration/channel.c | 6 ++++-- migration/meson.build | 1 + migration/multifd.c | 3 ++- migration/qemu-file-channel.c | 3 ++- migration/yank_functions.c | 20 ++++++++++++++++++++ migration/yank_functions.h | 17 +++++++++++++++++ stubs/yank.c | 6 ------ util/yank.c | 8 -------- 11 files changed, 61 insertions(+), 35 deletions(-) create mode 100644 migration/yank_functions.c create mode 100644 migration/yank_functions.h diff --git a/MAINTAINERS b/MAINTAINERS index 9147e9a429..455775c4a3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2821,6 +2821,7 @@ M: Lukas Straub S: Odd fixes F: util/yank.c F: stubs/yank.c +F: migration/yank_functions* F: include/qemu/yank.h F: qapi/yank.json diff --git a/chardev/char-socket.c b/chardev/char-socket.c index f618bdec28..1d455ecca4 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -402,6 +402,13 @@ static void remove_hup_source(SocketChardev *s) } } +static void char_socket_yank_iochannel(void *opaque) +{ + QIOChannel *ioc =3D QIO_CHANNEL(opaque); + + qio_channel_shutdown(ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); +} + static void tcp_chr_free_connection(Chardev *chr) { SocketChardev *s =3D SOCKET_CHARDEV(chr); @@ -424,7 +431,7 @@ static void tcp_chr_free_connection(Chardev *chr) (s->state =3D=3D TCP_CHARDEV_STATE_CONNECTING || s->state =3D=3D TCP_CHARDEV_STATE_CONNECTED)) { yank_unregister_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(s->sioc)); } object_unref(OBJECT(s->sioc)); @@ -946,7 +953,7 @@ static int tcp_chr_add_client(Chardev *chr, int fd) tcp_chr_set_client_ioc_name(chr, sioc); if (s->registered_yank) { yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(sioc)); } ret =3D tcp_chr_new_client(chr, sioc); @@ -965,7 +972,7 @@ static void tcp_chr_accept(QIONetListener *listener, tcp_chr_set_client_ioc_name(chr, cioc); if (s->registered_yank) { yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(cioc)); } tcp_chr_new_client(chr, cioc); @@ -985,7 +992,7 @@ static int tcp_chr_connect_client_sync(Chardev *chr, Er= ror **errp) } if (s->registered_yank) { yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(sioc)); } tcp_chr_new_client(chr, sioc); @@ -1005,7 +1012,7 @@ static void tcp_chr_accept_server_sync(Chardev *chr) tcp_chr_set_client_ioc_name(chr, sioc); if (s->registered_yank) { yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(sioc)); } tcp_chr_new_client(chr, sioc); @@ -1138,7 +1145,7 @@ static void qemu_chr_socket_connected(QIOTask *task, = void *opaque) tcp_chr_change_state(s, TCP_CHARDEV_STATE_DISCONNECTED); if (s->registered_yank) { yank_unregister_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(sioc)); } check_report_connect_error(chr, err); @@ -1176,7 +1183,7 @@ static void tcp_chr_connect_client_async(Chardev *chr) tcp_chr_set_client_ioc_name(chr, sioc); if (s->registered_yank) { yank_register_function(CHARDEV_YANK_INSTANCE(chr->label), - yank_generic_iochannel, + char_socket_yank_iochannel, QIO_CHANNEL(sioc)); } /* diff --git a/include/qemu/yank.h b/include/qemu/yank.h index 5b93c70cbf..5375a1f195 100644 --- a/include/qemu/yank.h +++ b/include/qemu/yank.h @@ -73,16 +73,6 @@ void yank_unregister_function(const YankInstance *instan= ce, YankFn *func, void *opaque); -/** - * yank_generic_iochannel: Generic yank function for iochannel - * - * This is a generic yank function which will call qio_channel_shutdown on= the - * provided QIOChannel. - * - * @opaque: QIOChannel to shutdown - */ -void yank_generic_iochannel(void *opaque); - #define BLOCKDEV_YANK_INSTANCE(the_node_name) (&(YankInstance) { \ .type =3D YANK_INSTANCE_TYPE_BLOCK_NODE, \ .u.block_node.node_name =3D (the_node_name) }) diff --git a/migration/channel.c b/migration/channel.c index 35fe234e9c..c9ee902021 100644 --- a/migration/channel.c +++ b/migration/channel.c @@ -20,6 +20,7 @@ #include "io/channel-tls.h" #include "io/channel-socket.h" #include "qemu/yank.h" +#include "yank_functions.h" /** * @migration_channel_process_incoming - Create new incoming migration cha= nnel @@ -38,7 +39,8 @@ void migration_channel_process_incoming(QIOChannel *ioc) ioc, object_get_typename(OBJECT(ioc))); if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET)) { - yank_register_function(MIGRATION_YANK_INSTANCE, yank_generic_iocha= nnel, + yank_register_function(MIGRATION_YANK_INSTANCE, + migration_yank_iochannel, QIO_CHANNEL(ioc)); } @@ -76,7 +78,7 @@ void migration_channel_connect(MigrationState *s, if (!error) { if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET)) { yank_register_function(MIGRATION_YANK_INSTANCE, - yank_generic_iochannel, + migration_yank_iochannel, QIO_CHANNEL(ioc)); } diff --git a/migration/meson.build b/migration/meson.build index 9645f44005..2cfa8eed72 100644 --- a/migration/meson.build +++ b/migration/meson.build @@ -6,6 +6,7 @@ migration_files =3D files( 'vmstate.c', 'qemu-file-channel.c', 'qemu-file.c', + 'yank_functions.c', ) softmmu_ss.add(migration_files) diff --git a/migration/multifd.c b/migration/multifd.c index 03527c564c..a6677c45c8 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -27,6 +27,7 @@ #include "qemu/yank.h" #include "io/channel-socket.h" +#include "yank_functions.h" /* Multiple fd's */ @@ -989,7 +990,7 @@ int multifd_load_cleanup(Error **errp) if (object_dynamic_cast(OBJECT(p->c), TYPE_QIO_CHANNEL_SOCKET) && OBJECT(p->c)->ref =3D=3D 1) { yank_unregister_function(MIGRATION_YANK_INSTANCE, - yank_generic_iochannel, + migration_yank_iochannel, QIO_CHANNEL(p->c)); } diff --git a/migration/qemu-file-channel.c b/migration/qemu-file-channel.c index afc3a7f642..876d05a540 100644 --- a/migration/qemu-file-channel.c +++ b/migration/qemu-file-channel.c @@ -28,6 +28,7 @@ #include "io/channel-socket.h" #include "qemu/iov.h" #include "qemu/yank.h" +#include "yank_functions.h" static ssize_t channel_writev_buffer(void *opaque, @@ -108,7 +109,7 @@ static int channel_close(void *opaque, Error **errp) if (object_dynamic_cast(OBJECT(ioc), TYPE_QIO_CHANNEL_SOCKET) && OBJECT(ioc)->ref =3D=3D 1) { yank_unregister_function(MIGRATION_YANK_INSTANCE, - yank_generic_iochannel, + migration_yank_iochannel, QIO_CHANNEL(ioc)); } object_unref(OBJECT(ioc)); diff --git a/migration/yank_functions.c b/migration/yank_functions.c new file mode 100644 index 0000000000..96c90e17dc --- /dev/null +++ b/migration/yank_functions.c @@ -0,0 +1,20 @@ +/* + * migration yank functions + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "io/channel.h" +#include "yank_functions.h" + +void migration_yank_iochannel(void *opaque) +{ + QIOChannel *ioc =3D QIO_CHANNEL(opaque); + + qio_channel_shutdown(ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); +} diff --git a/migration/yank_functions.h b/migration/yank_functions.h new file mode 100644 index 0000000000..055ea22523 --- /dev/null +++ b/migration/yank_functions.h @@ -0,0 +1,17 @@ +/* + * migration yank functions + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +/** + * migration_yank_iochannel: yank function for iochannel + * + * This yank function will call qio_channel_shutdown on the provided QIOCh= annel. + * + * @opaque: QIOChannel to shutdown + */ +void migration_yank_iochannel(void *opaque); diff --git a/stubs/yank.c b/stubs/yank.c index 6090416065..11b24fc057 100644 --- a/stubs/yank.c +++ b/stubs/yank.c @@ -21,9 +21,3 @@ void yank_unregister_function(const YankInstance *instanc= e, void *opaque) { } - -void yank_generic_iochannel(void *opaque) -{ -} - - diff --git a/util/yank.c b/util/yank.c index fc08f65209..abf47c346d 100644 --- a/util/yank.c +++ b/util/yank.c @@ -15,7 +15,6 @@ #include "qapi/qapi-commands-yank.h" #include "qapi/qapi-visit-yank.h" #include "qapi/clone-visitor.h" -#include "io/channel.h" #include "qemu/yank.h" struct YankFuncAndParam { @@ -151,13 +150,6 @@ void yank_unregister_function(const YankInstance *inst= ance, abort(); } -void yank_generic_iochannel(void *opaque) -{ - QIOChannel *ioc =3D QIO_CHANNEL(opaque); - - qio_channel_shutdown(ioc, QIO_CHANNEL_SHUTDOWN_BOTH, NULL); -} - void qmp_yank(YankInstanceList *instances, Error **errp) { -- 2.30.2 --Sig_/feoX5V9sdPIrnLO49g2BSEQ Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmBeG0MACgkQNasLKJxd slgnuQ/9EdJyPvfcEyrunEOkHrc1PcBIAKPlxU5gkZcj109fUaW5cSPciOK9wiP5 +6+zrN1wLpeGQ48khe38IXtRaDImKmBCGmrfzJCFJRKGuDVbZj57/wjQeoMCFoL+ EYPkkXKDn7JLe+Sp9VaCaYXabLvDU1QqA4ytczz5YLI16Sm5Qi3Cw9YUSHCbxRvb nTGPv+NFI+8RJFqZdLmAvgIE1oOgYYOf5K97MsFw0rHxrmztdRvgECMnoajIOy0f B5bfQ/CfwZv9o48oXm5VTHrgUn4fDrwsc3wAB0C/COI94ZpkwxNBOtaUBzkoIHre +jSru6rNGaf2Lm4TcXJBzx3XurXdcLYIQxRc4W0hu4tKuOLWs7WRHdno3jJe1Um9 TrXH8WnDSA1MiltG/t7Cb2mNIldOWUNxC3YW/EPkiKr7Ztp8qmv60evzndxJv8Y2 C9zj7PQtcp/salfUCh8OznxGuAKlJcfMZhIwF6IcYeI8TErPy/MvfHc+1V+mhqrn ciMj6iCl1/586NzE9L99PpCRluboSfEu76hXzw2LV1zBd4/kAl25AodjR/1m/qku Dzxt+fCcg7C8PcXADQahH0zswz3f88zb/w2CA6k7qjZudI+0aG8TS9blrJcVJQzZ HL95F08z5aAEqniXVyje8Mwk/ktE9T2vY0SC6fzxuBwbctsPOpE= =GDsu -----END PGP SIGNATURE----- --Sig_/feoX5V9sdPIrnLO49g2BSEQ-- From nobody Sat May 4 21:24:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1616780219; cv=none; d=zohomail.com; s=zohoarc; b=JtRnSAf1NPLl6/Y9tmX48x7QlrsqbLWvsRfaC8DUIPwq5xdI6aZ6Tm6zjxOpphCkgI42E5VYT2EvW32nJ4hLPB8XtMT4vFwJbTi8K0uNxwP9/9jX7tyYfH43NQERCAm2pLpnNjRAPkt5SW2mXX28BjVxz2P77IR7SrouK9torfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616780219; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dV0QOEN4qwxurA3vZpAgQkHKd45tRJL/6CwBST7ERhY=; b=hURJ7TP/4aA7zVSppfyl1m32hxa3Sys/RPjIxm7dXkebJXUQiyTUxq3QzEGL6gWR9fozQH/td8ClPoTO102iI5F4QIbX4VgLPrQQ2M0zq76LkqBb/pUcqGp2tCe9QG+ToU0Aic1PPC35+UG9gdLlMM8fIjiB3QPmqdF40k1FC6c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616780219901194.36730778934543; Fri, 26 Mar 2021 10:36:59 -0700 (PDT) Received: from localhost ([::1]:59596 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPqOJ-00071y-75 for importer@patchew.org; Fri, 26 Mar 2021 13:36:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44382) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMa-0005MC-Kz for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:12 -0400 Received: from mout.web.de ([212.227.17.11]:47559) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMW-0004U9-9M for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:12 -0400 Received: from gecko.fritz.box ([89.247.255.242]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M0hfO-1ldnD43isY-00usw9; Fri, 26 Mar 2021 18:35:04 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616780105; bh=E8oU0ECJhkMypWkLz/VLaAngom9VSRvVzuBq/XgRxgE=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=sMMblpFeCbZW/aB4HBu3d8E2vGDweUR8GHEmxz1FyEQ20lXXOpOvwNj575iXs6PMu V6E0Th/ycFeIDg3WgIoWoF3uWVrzn8YWDszczv+QW5aJ+Gou+bwm3jT6fDy+WhrID8 O3cc6bXmyjAXdcpz8V2ZAqM7C4CcpRWlMUUbs29w= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 26 Mar 2021 18:35:03 +0100 From: Lukas Straub To: Peter Maydell Subject: [PULL 2/6] yank: Always link full yank code Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/UPAThusQ5tQi3oQoF1XqLxu"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:ZRfPae/c2RNahbWm6UfDx5B5CP2I+V18y7pBxB7Jtlqf1+3Ro8s vE3Db/kQsFz6N0uI39gizyNj6O+civ/KHKF1WdOqa5NKmYqEszDs3cEgLKK4YkvqMnlpsQd A+NoOjPFnrqzo8pApsTe/D6ZCFVXv/rAbn+G3/61RcO9nKpMp91Heg0M+53BH/oMDQvK0aM tMPMy8v7ANOpPiLfD4cOQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:lHOKdF+QC0g=:dnuugPtd4IQvTjvuKN8j9E S3FVZirnSDIWzdNNwtpbS8btdSWWOECAYckD9OFd5wdZYNZtDqC3P/yz8OOVZMuZ5bYdFjFom yy3L+zDKE2A6B+8wmoETeg4ze0TXWfwrCo565A4uDRC0fr2eUZyeQtrt5RGWd7aCtiqlUn/IP z9qskLX/2pqWxl59DTpdzahpWCpHNM1iVlywEADSsBUGZNjQ+8YAsD+SOvr11uU5zU5f3aqW+ UuTZYF0cBecA3eBT2pbSCgFThS5NmA00joeFlQJh1hkGcDOh/uMcu/m3rQfZTHIY2PlvGN9gy O2ElZG/LS3A5sS+JplJAMYWR2Jid4D700yE4tSuDG+/1SimYe8wcSZtP6+SAJPZdnir7NsPnp L4k2nsc8YaRv5PMh+hX8xp5l9RG2Dc+F1eGi/Aa6AyWDrpt3XAVR6RnY2xE2f1ZsKDQBlwgKu HzL/6TEd8skg35RJv94P9md6hTPsvNS2uPViCYSPWj1PetgHRx+OEGznBd/YmuNOhuqUUNqP+ wicsGJqbp12mZ6yDQPQpTfU7why60i5U8601sarcVsltfsmLw12jLlU3ZAnAN6cXo7x5GxjfB 8xtlVCV5c/syDxcObxC4H45KPQFyFyikLPfHrz/LJ4v+nY1BONj6NuFimXU187VyMgjFn8hc1 elhrIUsd5ReWm9cbvfUx8AwP/+mv7kLyjy8sZRk6w9S90KOeF1iWoZHFmgFtyUhFO39/4OJoJ Wg2NgY7xlG+9RE2LzgndSK+u29b8epHId9VkE04irbeLsWy/xh/QE9ngKwOafGJ1Rce5pVdn4 stntX0krnOVWfSMyRHqKyGBkmJj9qpqSXgP54OdOauulTLSWTurdm3bcg+i8rkbQR5xAka5c5 6Tc5CmWEnv4gFnC3W5rtUE42xQ5zgARiuoFfIAsVP7rOkMJe7GAp7SuQ0an5BsU0qKQqAy7rH 0RkELHW1qk53pZu0jnPBISO5kkuf8rOdVySUT7aUOhvzxiK8X1lKrdCSnzMkShhk3uwhtLowd k8T/LQj1s+UgSTh9WpExBC16Pd3w5d7eDaR3nJf4fzF22PUWy+chK3PY9ZzOr3qdtTJDwIkJq luU0UuV0WVAODz/tOoNTvmTYayhq6d2hZgfRQbtIG/W4xtmepy6H3PNnUTot6+XZD83mwHmyV 72azN4i4zwSKF18djfRAtHmiAhxdTzD1oK872ti6Ed9dQQwU5hfiQcJ/pI1lvl+s0fq94= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.11; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @web.de) --Sig_/UPAThusQ5tQi3oQoF1XqLxu Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Yank now only depends on util and can be always linked in. Also remove the stubs as they are not needed anymore. Signed-off-by: Lukas Straub Reviewed-by: Thomas Huth Reviewed-by: Marc-Andr=C3=A9 Lureau --- MAINTAINERS | 1 - stubs/meson.build | 1 - stubs/yank.c | 23 ----------------------- util/meson.build | 2 +- 4 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 stubs/yank.c diff --git a/MAINTAINERS b/MAINTAINERS index 455775c4a3..77259c031d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2820,7 +2820,6 @@ Yank feature M: Lukas Straub S: Odd fixes F: util/yank.c -F: stubs/yank.c F: migration/yank_functions* F: include/qemu/yank.h F: qapi/yank.json diff --git a/stubs/meson.build b/stubs/meson.build index 8a3e804cf0..be6f6d609e 100644 --- a/stubs/meson.build +++ b/stubs/meson.build @@ -46,7 +46,6 @@ stub_ss.add(files('vm-stop.c')) stub_ss.add(files('win32-kbd-hook.c')) stub_ss.add(files('cpu-synchronize-state.c')) if have_block - stub_ss.add(files('yank.c')) stub_ss.add(files('replay-tools.c')) endif if have_system diff --git a/stubs/yank.c b/stubs/yank.c deleted file mode 100644 index 11b24fc057..0000000000 --- a/stubs/yank.c +++ /dev/null @@ -1,23 +0,0 @@ -#include "qemu/osdep.h" -#include "qemu/yank.h" - -bool yank_register_instance(const YankInstance *instance, Error **errp) -{ - return true; -} - -void yank_unregister_instance(const YankInstance *instance) -{ -} - -void yank_register_function(const YankInstance *instance, - YankFn *func, - void *opaque) -{ -} - -void yank_unregister_function(const YankInstance *instance, - YankFn *func, - void *opaque) -{ -} diff --git a/util/meson.build b/util/meson.build index 984fba965f..510765cde4 100644 --- a/util/meson.build +++ b/util/meson.build @@ -43,6 +43,7 @@ util_ss.add(files('stats64.c')) util_ss.add(files('systemd.c')) util_ss.add(when: 'CONFIG_POSIX', if_true: files('drm.c')) util_ss.add(files('guest-random.c')) +util_ss.add(files('yank.c')) if have_user util_ss.add(files('selfmap.c')) @@ -51,7 +52,6 @@ endif if have_system util_ss.add(files('crc-ccitt.c')) util_ss.add(when: 'CONFIG_GIO', if_true: [files('dbus.c'), gio]) - util_ss.add(files('yank.c')) util_ss.add(when: 'CONFIG_LINUX', if_true: files('userfaultfd.c')) endif -- 2.30.2 --Sig_/UPAThusQ5tQi3oQoF1XqLxu Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmBeG0cACgkQNasLKJxd slhmRRAAtQln7R2zjJJCHeFL6zUqkd4QYalwe9QcyDnQ+PQ6oI98BaqpgRyNUCV9 BUa+yymSZbtfKpLZrOnq3loBBtlTFCc6L0xOjdowPUNgPGGAjbBjavvwagMgzpFR YumBKO+xC4X9CsnhxjctPWtY6Lrjp4Ggc9BEsbuamRuAEVIoFB9m/nB3DTuz4OXa Olhthqhotb8e/Rn5CbwXNsffxj+VJk+dG0BclO4Z+m3wBA15v+0FtJLMSLnT530J GME4GKGeeIPx3qi3YpW7U7Pjl3lBAJUHQFjtA/Z7IQrlG57MYi//Sjad/5jq+Qum SYitVFw8Z3vDWQnxyAMEXfE8kcc/syFFt3FQFTgYECh9DdIUMYAnZ+ppwME++zJw gruMulUJxUF79y6WggVZ3nSk5QMNF6JXYzYQ5bXwkF7mBunMinDFIEl0R39yUP9e /EOZ3eQUl2E44P7ZmCYeFP17Pt5HUQSLzev9i24v7Z8d9BxdNfXrbkPdkdPVnaMT 4iE0o48RuigIRK24CLl8xESYVKD96YOMLTxFIHqRe5ZS1sCjzP4goWsU8nuTZEk3 t29nV35iJI9h4vtyNvguca2kIY0Mu60k0MTd6ZKGaBEYAq+3t2RE2evriqZ/mEZ4 aZt9PqxzgLR87sNaTeZHdXGsAmtaVI7idkYtWI4GXM0Pa1gLdjU= =ANiW -----END PGP SIGNATURE----- --Sig_/UPAThusQ5tQi3oQoF1XqLxu-- From nobody Sat May 4 21:24:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1616780221; cv=none; d=zohomail.com; s=zohoarc; b=UUPRis0XmZ2TzkWmb69qmuDwE2UYC0BvuRwc/waSCk4lna//DTrDJu3cUaPynE+aMGEIUmtMOm1iJyd/1le4AUP0WEhHtRCsvN2YrT4v7iFcW67rVgOqppWvlHkls8ELOtxhu9uUzLhGf0uxAryU3sgocMLqUdTcqfc9uiiSWQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616780221; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=7s4CUmBIjG0aAElj77c7AH1khqLrs991/tsoVUZLNK4=; b=KWtKPnVJPvgneFPaSy4JKraSfJLYF63sEurCjKxBDK1dd00sfoaTodNo2NsYlXT4iCqGJma8YGYvPJyTqPcSvObCtxiuWUiCXGsr8cAvzzqM8ZtGm3cxhNa1yTOehPdJOQa4RuJ4P5ZVZ3T8DC/UJQ+gwB9HPbgUsrGI5ls3wIU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616780221149112.80618645044763; Fri, 26 Mar 2021 10:37:01 -0700 (PDT) Received: from localhost ([::1]:59734 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPqOK-00075S-BP for importer@patchew.org; Fri, 26 Mar 2021 13:37:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44388) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMa-0005MU-UZ for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:12 -0400 Received: from mout.web.de ([217.72.192.78]:43363) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMY-0004Vc-LJ for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:12 -0400 Received: from gecko.fritz.box ([89.247.255.242]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MdO9K-1lzBBE1jWK-00ZLda; Fri, 26 Mar 2021 18:35:08 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616780108; bh=vQYFwkbpc8+2YYoeTKCpOW2UyebRy3eTS6c7OI7RdYs=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=QmOsYLe7V1uyKlaDFdHX6XC8o5IiBv/Ql5y2cUTeZSVMKhG3qYhUejiDSoMaS27Zb HkAon4sHGiDGvv/SyC88a3G+BoL5KrIf/eRHDUry62JvALtmf/Udg6yM6CR5h6dtY1 bXmagD+3IdhVlp2mNBf1pjfCtbcvuui4mzFHwlr0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 26 Mar 2021 18:35:07 +0100 From: Lukas Straub To: Peter Maydell Subject: [PULL 3/6] chardev/char.c: Move object_property_try_add_child out of chardev_new Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/baHpMfy+tjdsQyJUtWu=k=E"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:5ySW/GtLcD0oM5IEFM9MHBt9OZA1PAEG/w22NOngsltmCtPQHIe hd2PeqDaERyluTR69URA8dQV7y2ZrdXxMOlUcsqSTNV1xxtsdSUxMXRRh+eXarUtBy+qNbR fkSjIcSjuHIxYsfgiJVVPhP+jClH83OSdlJcvizRFXo+BEef2BiOWQ3D8qDBZy0bFDk4Fd1 fsIVV2Q1WvcfwTWoFyhBA== X-UI-Out-Filterresults: notjunk:1;V03:K0:YQL1E45nSE4=:0tRmhQwXUu67r7Kl2Ieh3a w0p9E7jiHO9tC5du1F0/YgjjZ6D/JVB8Y4VaFj46QZ0UO4GybuY38iKfMK/5U3Okhwxs2x3O1 aB723mNhSdUNbK5bt5IXXhbNQwhu+8dWx76uWIcEabk6Rp9nTup2zI3WoOT6onfM3vFd/Z8Tg MKD+Y9AzCjm5sXpgW/37NviIopScV8y7RNrh1752IZjNA+G1fmuMtrEM+DG4M3hg3gFVB4VRw 6CVdth4Kl4Wq2YakVZYX8lQxcMiGvxbTDVcl4IxNSz0eLeBz7CPn+Undcm5IifbqJvDD6PcxB Je28vSrBtPTX/DU0DD+2DUK3UtTxODiNYLSw66Pv/VutSSLFHfjdIn+4gbhDz+LNw0TWVKB5D 9eHs2IwM67cTV2SoeUOaX6Qb+j9kzcplOrnMJbxeGEz1GGklq2tffiZ9dLVrGoAPG+F4GrLrR wcn1ATmvwpTsNELsRcHIhVSp5MZOTHGbHTqOx5lcP6IVMpbDBb3UzO2gY9i65MHOAQea5Vy4f 05OGSkP8QQEsEGymr0d7fo131Jx6TfUOaQWrt5qfbWrfl5QyHihKxcTwhfDC2oC6FyEBWjKLz PrZfdX2c+qij+p+jYmswyzASdfVz9D2hY5pSpkuVs5OAGO455hiNY9Fxt+iHshc0Nwfidpzy/ zfnDuU36OtYPAAyy4hrmjABlZ1R7Z/KicFz5SBxhVhTccznXXXKwjeDxrr/Pv+IYmPLWZMoLD Psx6FvFABDUBX4F1zlg+CvQW5ba7pdz7lSZVJWxUHyITOXyL91m2YqyVe2VYE6IU7q40qyuQa +JxaDIIqMEEF6oYOtKYLzBnq+JVjY7EETXwpn79kJzPTJYeOqqFgMEoW1rkUB/Pr4aJaiMrH9 YN+W8uHV7nNq5oT7lWBgOvBoRUwXlYLCBOHanV6qHoJX85kF9L4e3xEjq1QR5ZplPWs7ad2Ar N6moySC6oBJysCXqioN69Om63pW/y567gUpPWdEBmArYH6k2xqVWVFAFHdKozlvtjpqRlgvGg Vdtkvc5RbPxoVHVyuDqSIsvKut1CSmoLx2RPHqjmAvbL/DIf6PX/LhWcXxh+LO15QnZtB14gG oFSGLJNDqcRmH/kYRb7A4TebEE7qPpKTkoQb6RhcMEErsW8Pw+IQZ5MloF/OCGmR0F7Ssu9o4 MmDhwKBq1LzPzVv3mlBfSVwbMAXDJysbl0QXM61YSr0mPR6QJXPlx5n6eKjIakWp1mMqw= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @web.de) --Sig_/baHpMfy+tjdsQyJUtWu=k=E Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Move object_property_try_add_child out of chardev_new into it's callers. This is a preparation for the next patches to fix yank with the chardev-change case. Signed-off-by: Lukas Straub Reviewed-by: Marc-Andr=C3=A9 Lureau Tested-by: Li Zhang --- chardev/char.c | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 140d6d9d36..48f321b3e1 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -975,7 +975,9 @@ static Chardev *chardev_new(const char *id, const char = *typename, qemu_char_open(chr, backend, &be_opened, &local_err); if (local_err) { - goto end; + error_propagate(errp, local_err); + object_unref(obj); + return NULL; } if (!chr->filename) { @@ -985,22 +987,6 @@ static Chardev *chardev_new(const char *id, const char= *typename, qemu_chr_be_event(chr, CHR_EVENT_OPENED); } - if (id) { - object_property_try_add_child(get_chardevs_root(), id, obj, - &local_err); - if (local_err) { - goto end; - } - object_unref(obj); - } - -end: - if (local_err) { - error_propagate(errp, local_err); - object_unref(obj); - return NULL; - } - return chr; } @@ -1009,6 +995,7 @@ Chardev *qemu_chardev_new(const char *id, const char *= typename, GMainContext *gcontext, Error **errp) { + Chardev *chr; g_autofree char *genid =3D NULL; if (!id) { @@ -1016,7 +1003,19 @@ Chardev *qemu_chardev_new(const char *id, const char= *typename, id =3D genid; } - return chardev_new(id, typename, backend, gcontext, errp); + chr =3D chardev_new(id, typename, backend, gcontext, errp); + if (!chr) { + return NULL; + } + + if (!object_property_try_add_child(get_chardevs_root(), id, OBJECT(chr= ), + errp)) { + object_unref(OBJECT(chr)); + return NULL; + } + object_unref(OBJECT(chr)); + + return chr; } ChardevReturn *qmp_chardev_add(const char *id, ChardevBackend *backend, @@ -1037,6 +1036,13 @@ ChardevReturn *qmp_chardev_add(const char *id, Chard= evBackend *backend, return NULL; } + if (!object_property_try_add_child(get_chardevs_root(), id, OBJECT(chr= ), + errp)) { + object_unref(OBJECT(chr)); + return NULL; + } + object_unref(OBJECT(chr)); + ret =3D g_new0(ChardevReturn, 1); if (CHARDEV_IS_PTY(chr)) { ret->pty =3D g_strdup(chr->filename + 4); -- 2.30.2 --Sig_/baHpMfy+tjdsQyJUtWu=k=E Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmBeG0sACgkQNasLKJxd slgMjg/+ORNC3kLnsPSHYrAr0NZpqh4nIx2KMkrqh6UVHEsllj5JRdgroJmt3/B9 I3fYRuRHk7Y8HjRSFMCkRiq4IM7Gq9pc+jVg4rr4SawfqHY+jT5f+ozCn+2ONUcJ tynvIBH4kQEbWmby9nJUu8VjII8iLKJiS3skPhpP/LDncn2f/9laBB1cf76vluHY FF+TXkmC0LtbkI6yQ2QOVJWUpS8t6EreMmKLPg2aYiomR6oe3Si2xCcqjF9105vD fITtZ1KqU/bABFKWYwvpeb0QKeY8DbNDkqJs+Ap8BP4IFuN2d8KJa/jZ/imfksda KIyXua4/TsgV9pzVIuXznDr6PLPSK1nt3YzSsG2VxVaAkzeKjQmqUfGGPKQCbjDL imtYXsDuvpl3SDPtfssRhVCUWOP9PC78IP+kMx76IAThl/5hMuOXninFvyqHu0Pa WckbdiDIVkvBxEd9vzBLEW17l5XTuU3Ffr565Z31kFpKz2aWerYLwDtpLeQzUsgF fHdFIsMF84bIKeSA9H8CdtnwQ5cSuX9RInbXNPbEWq7W79IBDDzLVWzMg9lurFHJ OOQ+WRVeVQJcjXye2g9qyhR0w6TNNtoNH3Rp0a36997dlNbNWyA5uz4sESx8BQkQ vrikH89WREhjmITSQI9hsLDgVoQxGvpyn41HhEKp/HGUTtrwKEY= =OEEv -----END PGP SIGNATURE----- --Sig_/baHpMfy+tjdsQyJUtWu=k=E-- From nobody Sat May 4 21:24:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1616780426; cv=none; d=zohomail.com; s=zohoarc; b=h5zjVB9w/fp8x/seQJYLpYDsRF0GcyzjL6Pyxckpcm1HF4UWqpHez5KUH/ws7r6RjDHKXBCDGmTjMHl5wDKf7GD03/9iQ/Nj3AAYIQxhX66bk2BW0/Of3fs219eGOxFggbY3hkZva76kA9MsQSML/ocSHypgo8BTcg+hCcgnUDs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616780426; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=f0ShHdxvpRhJwYKIUatBH0bcCr0OxJlf03VPCEPz1g0=; b=V/V4F/LF72GszHZGe5lYaZ6BNQqQYcqgGuCq7W932nR3/5LiohL/CwwH4bogct1CV8XPE3hfM+EflJKKaow6bXVclKa5/x1ZGSVuIv+QlkF64bzm2I75TZmCfln9XzCUVgu+S/2hLDRuaRH21U9cJyXslSPgwo3N8VjM8RfAwKk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616780426602584.085791516382; Fri, 26 Mar 2021 10:40:26 -0700 (PDT) Received: from localhost ([::1]:39036 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPqRd-0001iI-5U for importer@patchew.org; Fri, 26 Mar 2021 13:40:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44422) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMe-0005Rc-2z for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:16 -0400 Received: from mout.web.de ([217.72.192.78]:44131) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMc-0004aC-7l for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:15 -0400 Received: from gecko.fritz.box ([89.247.255.242]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MfHfy-1l18TS1aJu-00OmIk; Fri, 26 Mar 2021 18:35:12 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616780112; bh=+tezEO/HGYlg8UDCAoZCBB7IPiC45gc/drZqLmnqJCA=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=ptf2v1eS9ydxbxu2dNHA8//ixmBZr9PEkdYrltA5xFnGIuwjO3j2Y5/YRmA2JCahD nYCJuSrUMaZRAeRDSHwiuoza5YLhFpmgl/2zxkNQyf693rbKGBEflJl/s3TLNipS6T 5utqLr9zTMd9H+2IAYfI7y2sea2XQgaH2BwLPxl0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 26 Mar 2021 18:35:10 +0100 From: Lukas Straub To: Peter Maydell Subject: [PULL 4/6] chardev/char.c: Always pass id to chardev_new Message-ID: <3e669b6c160aa7278e37c4d95e0445574f96c7b7.1616779714.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/RfU193eNeZKKflER_Wt9EMs"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:p4aqaNZ128UjSErXZcSTZyCmTehRbHLH+yFfR86eJF7OLcKaxxn 0WR57zxNKrc8dos3ElSir0/lRATHshEJbPhgXuUsRc55/q3mqxSsk3ab64c+tfakyvtE5gL TFCILpeIbKwoUcZNsQwGg0Koy71bSl/hQAz/HdBsh/XG3TvU7TGSPF8RwO3qEn0nzFURmE0 GCxTsc5GZDOBZjB9WSmmQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:5YkUMQiK4XM=:0fgKNzTo9ESvH0FkbMjzo/ /NCbqwgrRBcDkWcHR44keU93ApYZLL4+cf2bOzex3vm9wE0IFMm8EoKBuMpOWyxCuUpkdPss2 Z8dYUGwzfLNHLjF7r3Bl51btZqYSZvHss80IQa828Lz9sj6mz2PDkX6hC3z1Xu3FsSF24p96u J1iNjhrt6ymJyKcLtUf67rcOcUyp5TQgJ/yexLjKMnhUprJ4XaVdjzmApN/z4yOYL1xxPth5j Y69QNOEYlNMsjQXbXo0XnBdpLTWYkwJrD7r7CenAb749Bk4Nl6MRcST1zrHxzkE0I39tvODiM Tqc3mHk2NBnVRxr+jy+IlcRsYNkyCEFhMubntISnI76WTT/Q+hYseiQvGk0DMYaftFwZwJDEf wXRED3lt/bYstgwLwglttAPSbX17rI4mLacjvj2opgP/fdh2r5gVS05+UxSBq3vQvH0gpa2wG yp0QMb119YAdvTFHkCl/eMLb7ks9tFlPMYPfTulTN+Iz+zu2TS9dCSoVUQy/iG82YVQ4V8jtA cX34VVtT7k5BwfMqnk1Y1O7tIGFm0MMMcAo51U4pj4eyKizzEYtGSbfT9reGmoqzlBADyBkgi Hq44Z71VMkNVimHux0g6/m0ga8rO9Ky8AUn41hZj7x+CA2j7nGdX9b32BX+I6nlx0kZ4RYO3T pdfk5nDZMZBD42+6b28FsiMh9qhbErF0TQiyCzH2wdl4zehn5w7ujxeBMWFVFRbQY51W1z0r9 OBeGjUqRz3KwbLih2BcDvRxqHBHjHqR5TUVAisaV7F0VgV52N+4GS26rcwrkhKCqu3CuXSwpJ VWGbYPOvLxtyQkaFlBNmMpnABjUfDOYLv49PrtdISJASOyeVU4RVsQdHuIzJ2UDj3tKWWLR0R IzRLauPNFK3Fr3yBOmGpyb/wUSzR2q/0aKxf7HqOUcMrYXEam+iGZ9DFwOgGCvIxCBDL9HWXw iHK2qh8qZ//oQmc3elxWRRwnnvFpEMYQd1NGPHkLdu8K1/hFyiqz28rdkhjsG5bKVmhM5Mf4h gBSpGdZc3ljXariLAAyL3oX4/AwUYOTcPlvNOTNxjXFdj70NtNyVaC1rBST+S3Nehk4zGCS+3 BarWMwwDuiMZjr47QBB5q6RNx8KMmn30xiHvE1+2cjZvNGzrYNB16vFcCEH+swXPTpijc9BgC FtRi/orWyvcrtgz38VQk1Wt1y50PRsloPSLcZtfc6pi16dn6wipnw3jDfyeGGIN2AbAfU= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @web.de) --Sig_/RfU193eNeZKKflER_Wt9EMs Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Always pass the id to chardev_new, since it is needed to register the yank instance for the chardev. Also, after checking that nothing calls chardev_new with id=3DNULL, assert() that id!=3DNULL. This fixes a crash when using chardev-change to change a chardev to chardev-socket, which attempts to register a yank instance. This in turn tries to dereference the NULL-pointer. Signed-off-by: Lukas Straub Reviewed-by: Marc-Andr=C3=A9 Lureau Tested-by: Li Zhang --- chardev/char.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 48f321b3e1..75993f903f 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -967,6 +967,7 @@ static Chardev *chardev_new(const char *id, const char = *typename, bool be_opened =3D true; assert(g_str_has_prefix(typename, "chardev-")); + assert(id); obj =3D object_new(typename); chr =3D CHARDEV(obj); @@ -1095,12 +1096,11 @@ ChardevReturn *qmp_chardev_change(const char *id, C= hardevBackend *backend, return NULL; } - chr_new =3D chardev_new(NULL, object_class_get_name(OBJECT_CLASS(cc)), + chr_new =3D chardev_new(id, object_class_get_name(OBJECT_CLASS(cc)), backend, chr->gcontext, errp); if (!chr_new) { return NULL; } - chr_new->label =3D g_strdup(id); if (chr->be_open && !chr_new->be_open) { qemu_chr_be_event(chr, CHR_EVENT_CLOSED); -- 2.30.2 --Sig_/RfU193eNeZKKflER_Wt9EMs Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmBeG04ACgkQNasLKJxd slhEYQ/+JARE3KO24R7VwpJAjIgS1ZW8ssZRoXm4G5+LwykpIar9UD+755bO/A8z tKhz9UE4AiTpI2uBkrp00laQ8Ex9Tl0p1oaZqUscccnrctOlrNsl1md368OTgPER Vx51tpJj1hjGYtqlDP5bXxB9mcMQeKAKHAlVcdwbhFZhWKFim6pZG5RA2SF+NAbV CimGFdYu6YvCVMuQjoGXEoLmypJOSorOy0HF5Qe6ZKdI9WESk+ITFgkoCHP9QcGl 0dz8cKS/yLS2RlxeYEqTyQd5iERMq1hJYkSw78VQe8VyVNBmGKCUCBtk57deUcNc iDFD3Q6cfSM1/EIsPVijay1itdBvHd7OpbmQI3rwVG0LMHnTOtPn7OAi5YcJ7940 WlMEoVXUPhkBxhdZT3ZGEwSpqWlpaI+8AUg6xNFjEBrheP5+XNo/Oa2+fSmqmUDc 0v5IjLfd+b76I5Sod9rOQRAHgeK5CxzGy+ewa+0o2OopbSo8bB4iVHyj/w3Go1lk FYHhXU2TzDzf3ySaYZQeRAKjxZUnKqacx/I6c/Qcw7AmVk8dOzK55HCK3Qnkm75r 3Pre2151DmwkzHP3EyYwqVQoike8hUxYC75muSYlCAZSh4b7WHtLzRIW9S6DQOjZ ixaGJdRGb0Qb+VuraU1rtyf/IZimoGbhkRO0YB9sNt9bxKr6VpI= =LII5 -----END PGP SIGNATURE----- --Sig_/RfU193eNeZKKflER_Wt9EMs-- From nobody Sat May 4 21:24:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1616780228; cv=none; d=zohomail.com; s=zohoarc; b=hTEyqnc2LcbVrAhdBJjT4CD4CBdToE572KFxdK/et9M3JAMvaCjI8WuUdrLs0mft/IdSETXoM4X8Gc589UQVx2JH158pqHxb5tc37nnHHZOq+i3TKBRv8uPOporoA7Ghb1qRPbXT5MYZwl1GAfmxm/t4MgCvky6toMzPISJZZCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616780228; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ITK6VM9lCpFXZELlvu1W39a/Zlg4T0HVW8DTc9qZD4k=; b=PrWfNc6y73kcJYHS5lT0xpxdYladfj9wxI9jk3pPUdyMy1lqxlZ/8FSrNk2Lj/U5dygYIVlM0CWsDqPc/qxk7qi6pAnuakeCayaQJnqZVwVFVMkQHMQD2M3dJwKBBVeip3ckA2H1ViperEhNiAhiDf9htmZlQoYBu1eOkBDu5kE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616780228295496.97241138957986; Fri, 26 Mar 2021 10:37:08 -0700 (PDT) Received: from localhost ([::1]:60420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPqOR-0007MB-DU for importer@patchew.org; Fri, 26 Mar 2021 13:37:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44496) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMq-0005b1-Dp for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:28 -0400 Received: from mout.web.de ([212.227.17.12]:49723) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMf-0004ej-Kr for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:28 -0400 Received: from gecko.fritz.box ([89.247.255.242]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MBkLb-1lXItI3UBT-00ApOF; Fri, 26 Mar 2021 18:35:15 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616780116; bh=gYwRYFW6o4co3B99P89eZBrde3j0fC+Y98Mt4RGPRqQ=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=lN9O67et6pFrFJE1KP3UYBsjC4Q/eKaLAJZt3NXr4dd/megfyHSZO/QaTyELuNzp/ tw71NwdO4LrMzRUcLZKWSo3qPvmq6Ip1x6gQNoUn84ft68WLqHRXsE9GXibsgsNMp9 mWz7/reTd/8cggCkw4HBpQrzi9saA05P7aaxQPcU= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 26 Mar 2021 18:35:14 +0100 From: Lukas Straub To: Peter Maydell Subject: [PULL 5/6] chardev: Fix yank with the chardev-change case Message-ID: <9637888d7591d2971975188478bb707299a1dc04.1616779714.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/Pwr=vHzyzWtFk7imU5smsU."; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:/CVJQYUfNGZcQMy6YZqu3OOprI5FSVkFmV5xK6zcRoH+9XZmM9H UQRjR7PTTt4NCCpP1EzFMcL09WLELeGwtIRpd6N72/BpzZGIW1BlaLUI04NaNweKvG2PVgy Oh70Ib/aZKFg8gkB+xl9TMaSy1e4gTi5PAuuSR0AGIJno4qHdKKCdz/H3BUx410nWs9cOU4 03aVXnurpzbON5yqyssng== X-UI-Out-Filterresults: notjunk:1;V03:K0:2ItlImhborw=:+weMz5pFodhUuC97moj8un XKG3zaiwhZkxhAmDrqQUj8aIBxIBJNIgWy7MvYgVmkZB4W6kb2HJafQxz4aP1Vd4kgbQMB5cW Rhh/hnmcGHrsOV0MN3WKx0s+pWDDwrhgtnZeHyelsJxyA9euFG/UPqvShLieuIoSQ/jwhD/fH fzsBlQhJx+JcMUDbHyQaphvxkxw58AfZfYr+1M8NL10QQgdbf9MPehmcQ0aJYmDGqFFZq+P1A b8LinMEM01J8bEMr0Jbx1sD+yQvY1O4Jtm+KJVds4Y3+8whQnLOnCu8qZ+LtdxS7WE/U9J/h6 tV5vHaztMnX4mhjfozkHaxg71+G8v2x535vRLPA3z0OkkuNOjFARKGx1IIAUCcuJ6wgthaZFD spP05ua084CvCK95l9ssCFcI+M1G7kS/QeGxwyBgUZkyyju5BgrCxU4kYgPvZQre50in3UqIY TQl7sic3e6LTVkYt0gHX/9tJvpEa4nTYzmw5PRoudndTgp7e3Z2nDsEQ6pW6BJt97jYQNatXq I0VYLRLvsMZBMz6krvlHuCHhiBX0vdMn9MCHUt+jpolobkeXhRfbsJbTGPxGir17ZUqCGBgNO Ux3CWlj4ZMltPcc35bTUiplsg3c43BFzvneWlFiPcxJSIZ1pbhvQJHaKItUkDx3Nk1sev6WJ6 MC0dL7mXcbj23jiXZA0sRiTqUeFUbHojIQWMQvkHw5vU9VQ5GICKySPLVTBbtiiYoqLpACZrE adkAYg3IpiAbd38VUCvHo4E4sXvZRjMTb0vlwm2tVcBqJCx9hwgFAG9+17sUYk3CB8G7rngMR pTy8JqtayUclUOdxd3qd/++WVRgiC56LELsgjxuPyTDoQSEfK4cOdGRhrroLKkLUcmACSDvcK WbHnSB1PH0MWBVshySZucT+XhDuZXVrOfeBlOkQRvLhiDiu+Fl9l8KOmMQZ+tZ4jBsGvSH4kp ONbCMWZF35Ker7XskWNRhnKKfvsfZ3qZ7mO61IJ1vufhAXo/ffQwN9zPjjf39JY2+GOkbYL3W WlPFgURlpC4V99UPATB8owIWCz8oB6yy1nrjeufIpIdtykrdJButNwf4rGo5+TWQIF5PWFhiR yAw2JMQilO8syWRCdSfz93yRmirT3n8StpsH/5ghEyQIPekZPB4ysDWNUa9ZqqDPtnJKp+jCB CC++PrThUZI+urbrFIhIxFExuVTEkIcqejVl2zUIoDdnAkC0kXGY2mvfIYOWXzndq9yhQ= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.17.12; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @web.de) --Sig_/Pwr=vHzyzWtFk7imU5smsU. Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When changing from chardev-socket (which supports yank) to chardev-socket again, it fails, because the new chardev attempts to register a new yank instance. This in turn fails, as there still is the yank instance from the current chardev. Also, the old chardev shouldn't unregister the yank instance when it is freed. To fix this, now the new chardev only registers a yank instance if the current chardev doesn't support yank and thus hasn't registered one already. Also, when the old chardev is freed, it now only unregisters the yank instance if the new chardev doesn't need it. If the initialization of the new chardev fails, it still has chr->handover_yank_instance set and won't unregister the yank instance when it is freed. s->registered_yank is always true here, as chardev-change only works on user-visible chardevs and those are guraranteed to register a yank instance as they are initialized via chardev_new() qemu_char_open() cc->open() (qmp_chardev_open_socket()). Signed-off-by: Lukas Straub Reviewed-by: Marc-Andr=C3=A9 Lureau Tested-by: Li Zhang --- chardev/char-socket.c | 20 +++++++++++++++++--- chardev/char.c | 35 ++++++++++++++++++++++++++++------- include/chardev/char.h | 3 +++ 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 1d455ecca4..daa89fe5d1 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1126,7 +1126,13 @@ static void char_socket_finalize(Object *obj) } g_free(s->tls_authz); if (s->registered_yank) { - yank_unregister_instance(CHARDEV_YANK_INSTANCE(chr->label)); + /* + * In the chardev-change special-case, we shouldn't unregister the= yank + * instance, as it still may be needed. + */ + if (!chr->handover_yank_instance) { + yank_unregister_instance(CHARDEV_YANK_INSTANCE(chr->label)); + } } qemu_chr_be_event(chr, CHR_EVENT_CLOSED); @@ -1424,8 +1430,14 @@ static void qmp_chardev_open_socket(Chardev *chr, qemu_chr_set_feature(chr, QEMU_CHAR_FEATURE_FD_PASS); } - if (!yank_register_instance(CHARDEV_YANK_INSTANCE(chr->label), errp)) { - return; + /* + * In the chardev-change special-case, we shouldn't register a new yank + * instance, as there already may be one. + */ + if (!chr->handover_yank_instance) { + if (!yank_register_instance(CHARDEV_YANK_INSTANCE(chr->label), err= p)) { + return; + } } s->registered_yank =3D true; @@ -1567,6 +1579,8 @@ static void char_socket_class_init(ObjectClass *oc, v= oid *data) { ChardevClass *cc =3D CHARDEV_CLASS(oc); + cc->supports_yank =3D true; + cc->parse =3D qemu_chr_parse_socket; cc->open =3D qmp_chardev_open_socket; cc->chr_wait_connected =3D tcp_chr_wait_connected; diff --git a/chardev/char.c b/chardev/char.c index 75993f903f..398f09df19 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -39,6 +39,7 @@ #include "qemu/option.h" #include "qemu/id.h" #include "qemu/coroutine.h" +#include "qemu/yank.h" #include "chardev-internal.h" @@ -266,6 +267,7 @@ static void char_init(Object *obj) { Chardev *chr =3D CHARDEV(obj); + chr->handover_yank_instance =3D false; chr->logfd =3D -1; qemu_mutex_init(&chr->chr_write_lock); @@ -959,6 +961,7 @@ void qemu_chr_set_feature(Chardev *chr, static Chardev *chardev_new(const char *id, const char *typename, ChardevBackend *backend, GMainContext *gcontext, + bool handover_yank_instance, Error **errp) { Object *obj; @@ -971,6 +974,7 @@ static Chardev *chardev_new(const char *id, const char = *typename, obj =3D object_new(typename); chr =3D CHARDEV(obj); + chr->handover_yank_instance =3D handover_yank_instance; chr->label =3D g_strdup(id); chr->gcontext =3D gcontext; @@ -1004,7 +1008,7 @@ Chardev *qemu_chardev_new(const char *id, const char = *typename, id =3D genid; } - chr =3D chardev_new(id, typename, backend, gcontext, errp); + chr =3D chardev_new(id, typename, backend, gcontext, false, errp); if (!chr) { return NULL; } @@ -1032,7 +1036,7 @@ ChardevReturn *qmp_chardev_add(const char *id, Charde= vBackend *backend, } chr =3D chardev_new(id, object_class_get_name(OBJECT_CLASS(cc)), - backend, NULL, errp); + backend, NULL, false, errp); if (!chr) { return NULL; } @@ -1057,9 +1061,10 @@ ChardevReturn *qmp_chardev_change(const char *id, Ch= ardevBackend *backend, Error **errp) { CharBackend *be; - const ChardevClass *cc; + const ChardevClass *cc, *cc_new; Chardev *chr, *chr_new; bool closed_sent =3D false; + bool handover_yank_instance; ChardevReturn *ret; chr =3D qemu_chr_find(id); @@ -1091,13 +1096,20 @@ ChardevReturn *qmp_chardev_change(const char *id, C= hardevBackend *backend, return NULL; } - cc =3D char_get_class(ChardevBackendKind_str(backend->type), errp); - if (!cc) { + cc =3D CHARDEV_GET_CLASS(chr); + cc_new =3D char_get_class(ChardevBackendKind_str(backend->type), errp); + if (!cc_new) { return NULL; } - chr_new =3D chardev_new(id, object_class_get_name(OBJECT_CLASS(cc)), - backend, chr->gcontext, errp); + /* + * The new chardev should not register a yank instance if the current + * chardev has registered one already. + */ + handover_yank_instance =3D cc->supports_yank && cc_new->supports_yank; + + chr_new =3D chardev_new(id, object_class_get_name(OBJECT_CLASS(cc_new)= ), + backend, chr->gcontext, handover_yank_instance, = errp); if (!chr_new) { return NULL; } @@ -1121,6 +1133,15 @@ ChardevReturn *qmp_chardev_change(const char *id, Ch= ardevBackend *backend, return NULL; } + /* change successfull, clean up */ + chr_new->handover_yank_instance =3D false; + + /* + * When the old chardev is freed, it should not unregister the yank + * instance if the new chardev needs it. + */ + chr->handover_yank_instance =3D handover_yank_instance; + object_unparent(OBJECT(chr)); object_property_add_child(get_chardevs_root(), chr_new->label, OBJECT(chr_new)); diff --git a/include/chardev/char.h b/include/chardev/char.h index 4181a2784a..7c0444f90d 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -65,6 +65,8 @@ struct Chardev { char *filename; int logfd; int be_open; + /* used to coordinate the chardev-change special-case: */ + bool handover_yank_instance; GSource *gsource; GMainContext *gcontext; DECLARE_BITMAP(features, QEMU_CHAR_FEATURE_LAST); @@ -251,6 +253,7 @@ struct ChardevClass { ObjectClass parent_class; bool internal; /* TODO: eventually use TYPE_USER_CREATABLE */ + bool supports_yank; void (*parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp); void (*open)(Chardev *chr, ChardevBackend *backend, -- 2.30.2 --Sig_/Pwr=vHzyzWtFk7imU5smsU. Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmBeG1IACgkQNasLKJxd slhpAA/9FDm24PBfLKGTu0jXKybjFl1BmOSGh7HkKu5SYMLxvKKfSqmVptvIMaEr kah2q2HJHRipj8wap/30KisIwKSk4sNQ/+0Xp7GB7hmTnQ7aPptUs1vPbskqGPhB d4BQ1UVlzIgIbI7EMESCMp/4IhBhGJRHCYdm34hMLYmReoW06Ci4f6G9OKukcZLk G3CgU620qfKRNeP8gs//D/vH9EgBs0a7YMb8Hj2imhfipzPYyk9/hqpWfTlm7IXx mPuN+DoghrD9Y+TEvS8QWsCmWV4p+VjKdRU2jqZTdn/WvG6/AWHx7YUeCXcxSuyJ jjMnFOLM/kL5hRUQq8i+nWaCSWtDSeVtPoJ+YmF+On50jIHq6CRGIwbXzNIY7ueF XM/GrOdXQzskmsraz+sK7+/1YhWHF0MWgcw07gR5IutsXQF3DLFgmivuyUeSNhBH wbcrghz/iFVgEwNTSYuj+eWSCkVuRXTlhQuIl7o7jPNi8YUWhCNcQH8ScBFkDUyr 8gqbYcq5HRLhZ59/rXkf0h0fj/8+R9Hh7XkztKpsUNWyjIyL99pewgJTqj2x5zS/ /3klpPDz0MgHGtvn0uK0/1q6U4/ZsFsVWgPnVmh/bNHOsJpRVyBfG7fsxDWqujD8 dzedibSjJBA6QjrKJ6LONziAtJiEjannLTwjKoBHW/5IBQ3+04M= =trTq -----END PGP SIGNATURE----- --Sig_/Pwr=vHzyzWtFk7imU5smsU.-- From nobody Sat May 4 21:24:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1616780431; cv=none; d=zohomail.com; s=zohoarc; b=FDkOW36wjFfKwnTzgJ1N0Oe5pjuRF9u74n1Yp/ntxPcHNJ6Cf4s7qw5Mg71eb8KwnykeG/3c7kNPiPze2hfUoOU1aCY0Jy4Tx6cuxWc0NC2VzVkckY8adS7RdFUG7RK8IlBCheW1kKLeXAdEsdX96gHQFFtofK/BanGwu6gN0rU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1616780431; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d+jnte8YUkNPA6jG+11eiTG0TEdqwIPiP/iijhX71RA=; b=ZRu4Qj9NSORwpCv6JU67LTW3aph18wJwhmAYpFnDPdT3j3UNrHaSVtGBqYGB+xoMYYJxZFPlJKGxt4E+NL2PQaIkuf2wiMxRtLWJAwJSRPK7wLqMsyUGwD9LY3gVP4KeVptfKQ46iTEC99Gb/FhQNOG+M47bOvcnwKWPKex2jzY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1616780431320201.45445142538927; Fri, 26 Mar 2021 10:40:31 -0700 (PDT) Received: from localhost ([::1]:39298 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPqRi-0001ot-Ic for importer@patchew.org; Fri, 26 Mar 2021 13:40:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44492) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMo-0005Zb-Cn for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:26 -0400 Received: from mout.web.de ([217.72.192.78]:58995) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPqMk-0004iG-M2 for qemu-devel@nongnu.org; Fri, 26 Mar 2021 13:35:26 -0400 Received: from gecko.fritz.box ([89.247.255.242]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0LjJH1-1lvb560wF5-00dUNo; Fri, 26 Mar 2021 18:35:19 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616780119; bh=C9tqVXqfH8ZEASqLqGHWpwZiyi8bI+mo0IvrY4GWx0I=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=H1uIzkaoQYqyCh0iCecIAUVPhVBrrT9oLP5NYJcORiYKZFbY7FJGqf0TgrVFG0Pm9 M+ivWpjmfHQieXQA24y04sDZrx7O7P4F51NPntEagiQnDKXyLzzLDLnvChmMzngeRT BAn9ogJJEOZnispdCzIi7KV7m+1nVPa/F+OyfGrw= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Date: Fri, 26 Mar 2021 18:35:18 +0100 From: Lukas Straub To: Peter Maydell Subject: [PULL 6/6] tests: Add tests for yank with the chardev-change case Message-ID: <7c2f1ddcaa1c97462cb0b834d5aa7368283aa67d.1616779714.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/tNso3hsMh2nZ6GsKj=wPYEL"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:DjG9i+IotW69twHHYSe7fJRVgn2b6CHHUXF4pGaV3F2EkK6UzCb LFWF/+HX3VV7WCB9QlkhAYtvjdpcEeMUoGFHzoMPFJi7I3DK2EZm8Sy8jTIdjIlZK1Jlt3t rPHIyBcQMdS/1/tnH2TBCyf4cTE6PfaMKsXSQ2zrRt0Bs3XhzarcuyXpSi5EsDDypXxkdYl BSsDuq6gzD68ZjbC4rbhw== X-UI-Out-Filterresults: notjunk:1;V03:K0:MFxqftFLcMU=:TStRyt6wj6HdpAw14aWxGt BXSuKgGK4HNZoBLSDVoARjYwjvqC5GjkBnQYPWaNeW291eO4zdgN9arZ8expaouFUHCCeIvgJ 2esme/kIxRNariWlmQFVa76QpG/YuNUAvrQOWVQ9xZVeuxqttmNiW/sk4BqntiMrE4kqhj1FT xotS69QPAWWAnIyZkX0zII5bdmiQvp2SNg/3S+HGRTaX+/Yogu4luncVwweUHQ/s6cGWRs4+I BCoq/KyQBsjYSldGJ64FpF8bidNrKiUlCAu3vfRoBpjLmaaoaiv38xZvIqj+/to/UOHILFbRs IraT+Vb6uPRT4eFeuuyF17IrZTsE9bNvIDLzxvOc2RafFkjQD6pbXDC/fIijk8I8GlsdxalxZ xdtIWnJguCQcFYlxEhIDYeqSz2Hnglqqc3kZznzhQxsA/SfEWUNryrmHN6a0hcEdulVSKAD2V qHIR40uQ4GtVyvjCh0EUwLn4vKuDDDAiYHBRu66AWFP+4MDrncaTIfN3fDLvIJbcN8NYQHuGl Mokn8r0Dm2uNdgAnojs3nalxmSOu2YPwKoEwhhcGkoyZO8jPvXe6NjN0PcSxNvIut1NY57Fe0 QB2eq4s/nz0mFntl6WGe9XVogyOeMDq1TWDDZAkuy7PpYWDfVnWucNuifev9UxNNUZrOdobfZ kqHUc9fjeAx/60GFreOShTvwCQWei5k9tE2PC8ynXjtEZTta5LiMJlxnixhW9wps5yceRtnMT 4kl24PsLtal3OYEVzIW63aX428JgpwwlsSF6bBzVoaEpgfG1IPszNQbGTyymUoxqu5WpCCwHS wVd7DnNo8MMmiGTJIZK9QTKMl+MtjfBXeWuFnUcvPHs8YuOKSHe9wmxRWUw+0G4j9GSUyq4FK IpjWroiPiNKZ2hN+XR6rvqR4LSPX+ljMvIvlHVyfMe4pwbm8lBYx8MVe01U/g84hJsluxl92i 63M+W0lZoPnEA8jsNBV/2HScGHerL4slj1A6lQsoNApvELjOmGqDM9A00LJz+/dc8yKp6Tw65 TBsiBWaq8FLB1X/raMecSvPf51C0TjQlXAc9BI4jltCg2rbikhoPa3+4cKcidGTimdv/NaLwC PuXuyFMRx3AfgNthf+O7Q4aQ8Tua9txozXG+yuWY0v45g2gQWTJnMm64p3AmrTsku2zYk3lMZ ZWE5dj2misARW8b/UgFAnLIv0xEEx973jUqlrzFeVWk49lmn8m1F1d8tnquNEhx7WFg5TzCQQ 3glQW7KO0HIhySuJ+ Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=217.72.192.78; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @web.de) --Sig_/tNso3hsMh2nZ6GsKj=wPYEL Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add tests for yank with the chardev-change case. Signed-off-by: Lukas Straub Reviewed-by: Marc-Andr=C3=A9 Lureau Tested-by: Li Zhang --- MAINTAINERS | 1 + tests/unit/meson.build | 3 +- tests/unit/test-yank.c | 200 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test-yank.c diff --git a/MAINTAINERS b/MAINTAINERS index 77259c031d..accb683a55 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2821,6 +2821,7 @@ M: Lukas Straub S: Odd fixes F: util/yank.c F: migration/yank_functions* +F: tests/unit/test-yank.c F: include/qemu/yank.h F: qapi/yank.json diff --git a/tests/unit/meson.build b/tests/unit/meson.build index 4bfe4627ba..b3bc2109da 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -123,7 +123,8 @@ if have_system 'test-util-sockets': ['socket-helpers.c'], 'test-base64': [], 'test-bufferiszero': [], - 'test-vmstate': [migration, io] + 'test-vmstate': [migration, io], + 'test-yank': ['socket-helpers.c', qom, io, chardev] } if 'CONFIG_INOTIFY1' in config_host tests +=3D {'test-util-filemonitor': []} diff --git a/tests/unit/test-yank.c b/tests/unit/test-yank.c new file mode 100644 index 0000000000..1596a3b98e --- /dev/null +++ b/tests/unit/test-yank.c @@ -0,0 +1,200 @@ +/* + * Tests for QEMU yank feature + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include + +#include "qemu/config-file.h" +#include "qemu/module.h" +#include "qemu/option.h" +#include "chardev/char-fe.h" +#include "sysemu/sysemu.h" +#include "qapi/error.h" +#include "qapi/qapi-commands-char.h" +#include "qapi/qapi-types-char.h" +#include "qapi/qapi-commands-yank.h" +#include "qapi/qapi-types-yank.h" +#include "io/channel-socket.h" +#include "socket-helpers.h" + +typedef struct { + SocketAddress *addr; + bool old_yank; + bool new_yank; + bool fail; +} CharChangeTestConfig; + +static int chardev_change(void *opaque) +{ + return 0; +} + +static bool is_yank_instance_registered(void) +{ + YankInstanceList *list; + bool ret; + + list =3D qmp_query_yank(&error_abort); + + ret =3D !!list; + + qapi_free_YankInstanceList(list); + + return ret; +} + +static void char_change_test(gconstpointer opaque) +{ + CharChangeTestConfig *conf =3D (gpointer) opaque; + SocketAddress *addr; + Chardev *chr; + CharBackend be; + ChardevReturn *ret; + QIOChannelSocket *ioc; + + /* + * Setup a listener socket and determine its address + * so we know the TCP port for the client later + */ + ioc =3D qio_channel_socket_new(); + g_assert_nonnull(ioc); + qio_channel_socket_listen_sync(ioc, conf->addr, 1, &error_abort); + addr =3D qio_channel_socket_get_local_address(ioc, &error_abort); + g_assert_nonnull(addr); + + ChardevBackend backend[2] =3D { + /* doesn't support yank */ + { .type =3D CHARDEV_BACKEND_KIND_NULL }, + /* supports yank */ + { + .type =3D CHARDEV_BACKEND_KIND_SOCKET, + .u.socket.data =3D &(ChardevSocket) { + .addr =3D &(SocketAddressLegacy) { + .type =3D SOCKET_ADDRESS_LEGACY_KIND_INET, + .u.inet.data =3D &addr->u.inet + }, + .has_server =3D true, + .server =3D false + } + } }; + + ChardevBackend fail_backend[2] =3D { + /* doesn't support yank */ + { + .type =3D CHARDEV_BACKEND_KIND_UDP, + .u.udp.data =3D &(ChardevUdp) { + .remote =3D &(SocketAddressLegacy) { + .type =3D SOCKET_ADDRESS_LEGACY_KIND_UNIX, + .u.q_unix.data =3D &(UnixSocketAddress) { + .path =3D (char *)"" + } + } + } + }, + /* supports yank */ + { + .type =3D CHARDEV_BACKEND_KIND_SOCKET, + .u.socket.data =3D &(ChardevSocket) { + .addr =3D &(SocketAddressLegacy) { + .type =3D SOCKET_ADDRESS_LEGACY_KIND_INET, + .u.inet.data =3D &(InetSocketAddress) { + .host =3D (char *)"127.0.0.1", + .port =3D (char *)"0" + } + }, + .has_server =3D true, + .server =3D false + } + } }; + + g_assert(!is_yank_instance_registered()); + + ret =3D qmp_chardev_add("chardev", &backend[conf->old_yank], &error_ab= ort); + qapi_free_ChardevReturn(ret); + chr =3D qemu_chr_find("chardev"); + g_assert_nonnull(chr); + + g_assert(is_yank_instance_registered() =3D=3D conf->old_yank); + + qemu_chr_wait_connected(chr, &error_abort); + qemu_chr_fe_init(&be, chr, &error_abort); + /* allow chardev-change */ + qemu_chr_fe_set_handlers(&be, NULL, NULL, + NULL, chardev_change, NULL, NULL, true); + + if (conf->fail) { + g_setenv("QTEST_SILENT_ERRORS", "1", 1); + ret =3D qmp_chardev_change("chardev", &fail_backend[conf->new_yank= ], + NULL); + g_assert_null(ret); + g_assert(be.chr =3D=3D chr); + g_assert(is_yank_instance_registered() =3D=3D conf->old_yank); + g_unsetenv("QTEST_SILENT_ERRORS"); + } else { + ret =3D qmp_chardev_change("chardev", &backend[conf->new_yank], + &error_abort); + g_assert_nonnull(ret); + g_assert(be.chr !=3D chr); + g_assert(is_yank_instance_registered() =3D=3D conf->new_yank); + } + + object_unparent(OBJECT(be.chr)); + object_unref(OBJECT(ioc)); + qapi_free_ChardevReturn(ret); + qapi_free_SocketAddress(addr); +} + +static SocketAddress tcpaddr =3D { + .type =3D SOCKET_ADDRESS_TYPE_INET, + .u.inet.host =3D (char *)"127.0.0.1", + .u.inet.port =3D (char *)"0", +}; + +int main(int argc, char **argv) +{ + bool has_ipv4, has_ipv6; + + qemu_init_main_loop(&error_abort); + socket_init(); + + g_test_init(&argc, &argv, NULL); + + if (socket_check_protocol_support(&has_ipv4, &has_ipv6) < 0) { + g_printerr("socket_check_protocol_support() failed\n"); + goto end; + } + + if (!has_ipv4) { + goto end; + } + + module_call_init(MODULE_INIT_QOM); + qemu_add_opts(&qemu_chardev_opts); + +#define CHAR_CHANGE_TEST(name, _old_yank, _new_yank) = \ + g_test_add_data_func("/yank/char_change/success/" # name, = \ + &(CharChangeTestConfig) { .addr =3D &tcpaddr,= \ + .old_yank =3D (_old= _yank),\ + .new_yank =3D (_new= _yank),\ + .fail =3D false }, = \ + char_change_test); = \ + g_test_add_data_func("/yank/char_change/fail/" # name, = \ + &(CharChangeTestConfig) { .addr =3D &tcpaddr,= \ + .old_yank =3D (_old= _yank),\ + .new_yank =3D (_new= _yank),\ + .fail =3D true }, = \ + char_change_test); + + CHAR_CHANGE_TEST(to_yank, false, true); + CHAR_CHANGE_TEST(yank_to_yank, true, true); + CHAR_CHANGE_TEST(from_yank, true, false); + +end: + return g_test_run(); +} -- 2.30.2 --Sig_/tNso3hsMh2nZ6GsKj=wPYEL Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmBeG1YACgkQNasLKJxd slgdjQ//SdaJ8ytk3ZbGeik2eIcSyJU+j/SMHDkO4KNNq/dZs0QFRaAluaAIdnt3 Pu5rE0XsayLExNZq5s1qrZ2P2RfrVFc+IRleDv99lHnc0NoZ21paCLwHbxHeWS+5 5PgQAJsi9u/GtaUf+hA+0U9wxza6bj9Bl7lO0bwWsb4up25VuGRMEgIssXMqFKOE B1YjA+S8+5nengthIBNdKGmvmYt1qVDLPYJkUpwIODteZ/Ssi4X2Wv2fNd4O/L3s +dBYeFG5W6Kw/28WEMmDh0oWsBRUeFGUjrILNpiGxfu9r/QxuayZNxFpifwqTN5u 8s8Izx9YPW8GT6OijzrdRSzmoH0ncLlhvcqfn7VSL62k0h4UXpQjQkA2cf0V7Kd9 +wHgZuU/VZjVQWDEAoJ0MTKc+TU/qMik7l1bImtOeA84vNS2xhLIpeD/nFEDVJRB YDXJy0pTLh596pklapblF5/HvXbShmvedkwxg9CDsb4bTll0omJqDAVLLCZM0Cla ooIr85xEtfnC+rxJxPYdq2+WGJO+vWU55ylaBRYPJTX+7AoLsfF5vHgx+plw+kQr 7Bv3vtehNxcuhoSr7sSpZZuvlhYTbLWIfHrWtI/3ANEGDdhJEI5Zbzwa3A4YudcQ 5ZpEYGl7TENLBcpYVW7e65ipBcsPczBDZgRDeXP3OXjpg4c3Hj8= =BWTa -----END PGP SIGNATURE----- --Sig_/tNso3hsMh2nZ6GsKj=wPYEL--