From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023097.outbound.protection.outlook.com [40.107.159.97]) by lore.virtuozzo.com (Postfix) with ESMTPS id 28E3C80BA4 for ; Tue, 20 Oct 2026 16:31:01 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EUZdScIogy8QBHm8wBit7rn9kEBfsXviMeRcVq6DhMXBBWwDKvfcKBbXjkfW6tFZ0jCYsNYrf7MWDI0Dex41muj5rPlrc/F+v3kV1jqo/9YvaWiJgrGIm6widXNvNrRq0ujm1kigCteP+HKt4SYt2y6LLV2QsFTJR64m0NVU1knzyBDlVe8UZP1DHUjXvAUfSRsrQVo2oROB4csnXs7EHe1iCTpZXLLJkJX+ipMfhRhsP8gxOpxY9LwRe0EDeR9zv7YKoTiRIvCIvXC5P2AzegpRtZqpsjIC7RlUONn7YhY4qSu7WPF/FRVV/bsX0oAhP2CKloAcibAJsiWnZbEW4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DyPoAkUh5mIZuA2qbd+eIclBKt/iXFVLy9zti/qWed0=; b=aX9obS9h5xTd7Mp1ZEj5LWqfyiyUQlACinWsaojYxoSfI1dVsL+0NQCeA0lSgITAuhXNVGqI2vqzP2t8TsLEICtahemQ9l5oRQsIaEVPSTMcJRWbbVQInl1Xs1PAoRcaU/CN2HgTcFOWCaWKlObuZvzV4ml3zIlomG4Da2iyhJv50GrnKidsmpsDDLe0vaLldONc0vtjEI5URS+3gqXSjp97be9u0IzcDFXY6jGO6iydf4HjxZq+lgtnobNq3gzrU7vfMqMBy8WkKFbzvh8feElEGDfsk7mXe8F+Xy9A+iJ3cVMIAUT5Amu80VVDcnO0lxmOJMJVVT2ReBtk/N+hcg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DyPoAkUh5mIZuA2qbd+eIclBKt/iXFVLy9zti/qWed0=; b=AS/vDiOhrPTXMyq6MoXO/KQQxnUuCU7bwKzGSoEtS6kD4bd4FrosA2PFqful/eqWQ9asIutjF7kPIy4Sy80cuwnfy4y4zRlbXus1kG4piAURY2qJVMgS/DND01xyEnboKdgEec//uKNCsZA+/7Vg2a1CVnX/6I/13h4H3r8OqFFMIalVHdc867TaCfrEgNIEOv9pQSlE95nMMmOyUoVR9bIIEWwChdwwHVn2sdDthxkPdfePVp1uNc4qw7n+R7XX3DXlF4ikr8pklscdx1JP0kHRjArdBdX7rYOF6c470RykRmptMiLrcQsL9Y1TGrGTy3YHnvUSH2qfYX3ySU2S+A== Authentication-Results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by AS4PR08MB7553.eurprd08.prod.outlook.com (2603:10a6:20b:4fb::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.15; Tue, 20 Oct 2026 16:30:59 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0546.012; Tue, 20 Oct 2026 16:30:58 +0000 From: Andrey Drobyshev Date: Tue, 20 Oct 2026 19:30:57 +0300 Subject: [PATCH QEMU HCI-8.1 v4 17/31] migration: Free cpr-transfer MigrationAddress along with gsource Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261020-vfio_v1-v4-17-83a5668230e5@virtuozzo.com> References: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> In-Reply-To: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0056.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34b::14) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS4PR08MB7553:EE_ X-MS-Office365-Filtering-Correlation-Id: 8ef3cf23-f402-47d3-0e5d-08df2ec7847a X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|1800799024|376014|52116014|366016|5113699003|10067099003|22082099003|18002099003|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: BSGB+Tm4efW2017VH4Ad7/caPB3i83jIkvRkx+AAjKqEU4y7RjrqoVY8mIkL3UC0Cz4gcWzmHUHDq3BT6iLcT2ojmyPcrgGKRVmBREmh45Bpn0Gz0RWdvd+M/8bDHMH0fs4tBXMXHOzPlBLnVQ4DV1CmhYCbtBaJM7kLuMC7CcrpqaGmBAfiiIIBeeMe3Ix2yWOgZvHGjbSyoWE7TOz5E25efttcyzwKIeFW1m88b3FxuYU/x6j+MWA/xLstj2xXp9Pwoxyjr8zMd1NbUxEtOvyx6BBffB0ouPPXznReiBumkaXy88CgNk2OqNBTAoHjLGVfQPlDOUUt43HyHMGpOYZNqXpJux5yzjrW+pOVcDdBF7ayQQmrxCzpzY+w5YIQl3rorTIPwoECJ7FqDMULUJQUVz9NwjGsrTJMNZCmtgRPXkffRKWs5biBVn430p/GMe4To5DJUg/jlcU4UlTqb3UsI7nQrxfzmloHIN53OPzY2lKd5uqVJvVj03V2I/M1y41+LnpgAf89uLJIEBz9UbIrV0NxYwAk8dXQUW0oPHJgw+t2q3rs6G1/WyNxGe/miAbbCkXa5QriHhnGU5Uz8+y1ohnJ1wuJh/Xdal2/nZFAQ8AyRpLP+HopNmKALsDpQ9Duc++5oim0A4cxkKHRHrG6jF3IV+gdrFEyZXCNEp4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10656.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(23010399003)(1800799024)(376014)(52116014)(366016)(5113699003)(10067099003)(22082099003)(18002099003)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TC9ET05ubld3ck1NVUNrS0o0REFFQTRVZkRSOUo0RmFYVHJlaGcxOGpZRGNX?= =?utf-8?B?VXU5WHdXeGg0UUsvS29TMGtsazhkeHhwck14WENhN2plV2lObmYzWnBiRm4v?= =?utf-8?B?ZkgxazlHRHlQRjJmUjhDNzJZY1lLZzhUVFBab1FGUHNPVTA5SFRaaDdRWkJE?= =?utf-8?B?UVIrejFjR2l6T0cyM0ZOZ21DZnRiMFZvb3R0SndwY3c3UHdPU1lDcXVMYjkv?= =?utf-8?B?SkFiNVlWcnNvcWZzblpRRVZrQ3NkWEhraC9BSlBuWWg1eERvSXpFUnJ6U2xz?= =?utf-8?B?M2ZMVnJFaDhrd1dyMWJrV1E3WEdPcHJqaE5MblRZeWdiSUEvaW9WRldnV2xz?= =?utf-8?B?U0tMZlRKUCtwcUNuRDZ6SzdWMDB4YXNBWWFmajRaR0c1ZHBXR0l2N2lJaUNS?= =?utf-8?B?VXJVek91bWtTdzc3Mkk0L0NGK3J0aUxsekpNd0VpODJNYWRvdlpkOHZuQlR4?= =?utf-8?B?L1R5QmV6dVAwYjBpMzlSaXhGR2Y2NEdlS2tET0dWQ0d1WmpMSEFjQnY5VEp4?= =?utf-8?B?dkk0Uko5Rk9QbTFNYk5vaTVGeWtGOWRQQWVKckxHOVBxcG1Qd2VPcmpsM1Fp?= =?utf-8?B?NHg1OTE0RHYvRnlDNWUxVzFoQXZmWm1qT0RRNFMvVGI2UHg3NERKMFlZU2k4?= =?utf-8?B?Mk1aVXErNTJ5Rk53QkY3STQ1ZlpITFBFV1JSN24wL1B3QmZPUnZkVi9sb0dx?= =?utf-8?B?c3VBNFpWMWtGRmZmaFd5TzFOQ3o0VkpvUkFSU25zcFF5S1dwODZOeFdmeHVD?= =?utf-8?B?L29XdUxjWEdScE9wTWU5cHUyUjlsclVzdUtwSS8xM3FMU3VoREtZVFRJdkRP?= =?utf-8?B?WjFPNitZVVUwTmNTRk5XRTRyTmY0M3V4YS9WbnlwV25CSis1czNNbS8xcTVB?= =?utf-8?B?a21DKzA5d1V3eFNPT2FpdVdWRUNuekdpWXNMTmZ6MjFFMHh0bTF5eWxaeGFW?= =?utf-8?B?azJ5NGlLelhKWlYzRitQbTdxWUhNVFl5bS92ay9ubFNDeCtxM3BJSmUvdUln?= =?utf-8?B?RDgwVUtYU1YzWkRiV0thdzIxUndGY2Z5bTdkaisyZ2J1cU0yTUgrVEc1Z2JX?= =?utf-8?B?VXhGU1pJdHJMcUhVblBsWEhRMzdPRmxTTC9tMFBkVXgvUTNKUEQ4a0IrL0lp?= =?utf-8?B?VVkyTmJEbUZyTkFOdGgyLzRVUTE2RnNDcTY2MG9ZdjFCN0h4QmJibUduSXFP?= =?utf-8?B?VWtFaTlSYTVYTk4zYlpQeUphbzVKaVJsSW9ZL0JueHlNM0NOM2ZLUFBvWWlO?= =?utf-8?B?MUpJZmdxZ014NWwzQ01TRVAvbnBYZGtlVEFrVVBoRkFHZXlTWjFKaVJPL3h2?= =?utf-8?B?WWpsYUhybFBvOGhRN3gxcDlMQVNPRmZrRVcvZEhOSmNEOUJDMHJHbnNuaEYx?= =?utf-8?B?Z2NuMUF1dFZiTGhoQy9kQlNsTm0rcUFmL1kyRzFmcG1tZUZCTmtxUjJzVW9k?= =?utf-8?B?cjdqK3M3U2NMcnBBMjJ0VHQ2UWl2L1JrL1pod3F5dVpwQW1DL2NqYnNtNWlJ?= =?utf-8?B?VDVaWXUyUTl5NkdqZklESk1WV3lUd3NQMXFycm5qRGYwRDdTS3RJRUxJRWhZ?= =?utf-8?B?bjAySkUzZFN1UGt5RURlSWdvNm5na0pGMkNWd2doVWxrZm9ZQkRxVHRHaTBx?= =?utf-8?B?ZXQ5ZHpuYU9MV1Y0ejBDMmNQK3dvY2pnK0ZGMU1aZDhRNzEzcjY3M3ZiaUkr?= =?utf-8?B?UjdpNHFLbnBkVitacG1YazZIZjdiVUlTRFRUV2tZd2wvNjYvUzZuOUNrbUZu?= =?utf-8?B?c3prUXhOU2Y4R1Y0QzZZR1phblo2R2RGbDVsb1U3UGllWWVtc0RmZDdDMzRW?= =?utf-8?B?N1RrN21VY0trT3FGeGVOeFZLSm1KR1NYZ1owekVoTU5ESldBdURxMjVqQURl?= =?utf-8?B?ZGswSDZ6aTgzRmFUbDg1ckRCTEs2YW92TTBaUlhyM2Erai9JQy9UN3VBdFpq?= =?utf-8?B?TTFKL2ZETVQ2TUlGYVF4QnpVUEdVU1JTd0xDdkEzVkU5WncydXlwQXREMSs2?= =?utf-8?B?b1JjTjlKWmhtTCt6aklGdExsZnU3b2dLVzNLUS9RY1hVTWJsSmw1WHRKUWtx?= =?utf-8?B?NmtOT1Y3dGp6aG5wRnJGYVdTWlNBdWlEMEFnQ3pWS2Q3RGhpYndnT1dzM3N0?= =?utf-8?B?bnBDT0FtOThXUUF4K2dINGVUdlE3VUFraENvVUJDL1pyc1NDVTVTdW9CUjRT?= =?utf-8?B?L0llKzhBOWV1aFJvYytTRG9VS1dDTnVCQlg1NEViVUQwTHQzbktGempOZXFq?= =?utf-8?B?UmFiSHZhYmI4RFVndk9NRkxkNXRzOVUvK1pIdUZYSE9UTUxpd3c5OHVvandY?= =?utf-8?B?elJackFaODNnYmFFcFFsM3NvS281aUF5dll6c0pObUhwK1J2WExCcFFPWHo0?= =?utf-8?Q?HgNwIrJ6nsUNE5Ik=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8ef3cf23-f402-47d3-0e5d-08df2ec7847a X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2026 16:30:56.7031 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JJ3lDxy/fJZfyo4b5jJclZYwtdh9uLYSJe7/U0vjSqzA/7LkppPu3gl0sJUMJNEklpMsdi4Ld5wIX0V6g2LAInZc/RZ6Jbd/h3tA7RrIAbM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7553 From: Fabiano Rosas When setting a callback on a Glib source and giving it a data pointer, it's natural to also provide the destructor for the data in question. Since migrate_hup_add() already needs to clone the MigrationAddress when setting the qmp_migrate_finish_cb callback, also pass the qapi_free_MigrationAddress as the GDestroyNotify callback. With this the address doesn't need to be freed at the callback body, making the management of that memory slightly simpler. andrey.drobyshev: This commit was cherry-picked from the upstream commit 6a887119ce18, adapted for the hci-dev base: qmp_migrate_finish_cb() here still closes the cpr state and deletes the HUP source itself (upstream had already moved that into migration_cleanup()), so only the explicit qapi_free_MigrationAddress() call goes away from it. Cc: Mark Kanda Cc: Ben Chaney Reviewed-by: Peter Xu Reviewed-by: Prasad Pandit Link: https://lore.kernel.org/qemu-devel/20260123141656.6765-23-farosas@suse.de Signed-off-by: Fabiano Rosas --- migration/migration.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 802dc900c6e..63e9dd54805 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2265,9 +2265,11 @@ static void qmp_migrate_finish(MigrationAddress *addr, Error **errp); static void migrate_hup_add(MigrationState *s, QIOChannel *ioc, GSourceFunc cb, void *opaque) { - s->hup_source = qio_channel_create_watch(ioc, G_IO_HUP); - g_source_set_callback(s->hup_source, cb, opaque, NULL); - g_source_attach(s->hup_source, NULL); + s->hup_source = qio_channel_create_watch(ioc, G_IO_HUP); + g_source_set_callback(s->hup_source, cb, + QAPI_CLONE(MigrationAddress, opaque), + (GDestroyNotify)qapi_free_MigrationAddress); + g_source_attach(s->hup_source, NULL); } static void migrate_hup_delete(MigrationState *s) @@ -2289,7 +2291,6 @@ static gboolean qmp_migrate_finish_cb(QIOChannel *channel, cpr_state_close(); migrate_hup_delete(migrate_get_current()); - qapi_free_MigrationAddress(addr); return G_SOURCE_REMOVE; } @@ -2370,7 +2371,7 @@ void qmp_migrate(const char *uri, bool has_channels, */ if (migrate_mode() == MIG_MODE_CPR_TRANSFER) { migrate_hup_add(s, cpr_state_ioc(), (GSourceFunc)qmp_migrate_finish_cb, - QAPI_CLONE(MigrationAddress, addr)); + addr); } else { qmp_migrate_finish(addr, errp); -- 2.47.1