From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023090.outbound.protection.outlook.com [52.101.72.90]) by lore.virtuozzo.com (Postfix) with ESMTPS id 5322880B0F for ; Fri, 16 Oct 2026 15:26:17 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hGQ8bXJgE6a9s/EZbfohb5M/7IAGia9oCakmtZu2KHsemKE5J/uKIfDdj3Nl3z8sk1aBczym4seqGE3QcqY5ZpbGYaliNvFap7KODadjpfJM/PmjHaBDK4i96xphHy/KBYo/CN5F24KYdO7vjA0W/lsr30wSLlK8PCrXCTCmPvJvajPBW40IplRbP79nzvCbzLOmyMSKqA+DYZX0+41Z49i1R1uMuzSx0HnnYwHNb2MrM0qARQt8grtycjGmzpBYHprO1qUII1zEjZQaeYgUKMTNeAc1HCMe9GWCu/oHAErbHk4se650RAizbMtEhLccsh6IHFP8etzHgUgbHeM06g== 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=Y/Oa90E8l9RHabuoh8TEkrscQG2omSaXuj2VkAUGg7o=; b=bPyIA9E5gjfb6fmMuAVnh4sH3K9L5LChOwL5Je2lqcJj8BkJRhPaMU1TjU9t2WKtXCIyvMq3W9aAu6Q2a7AVBf6EuhXfoTLRHNubAhK4V34JyjHL22WdueIPzH+44EkBmmu/aV6ZDOzWmYEew4eX+rb+LBDgWgB8zFUIdOdlRxsdNwzNz7CO6MGUNiJEtMTQm+NBTEEQyUNasZiXy73idkbePrZ1BRLiettxMlsU8UWtyFduOXKqQgmvlj6Ca3HK6+ZgCtOxihlpY/Wcg1JsfcIwmJw+NFXFVwcaF2WXWzzYT+P2RBcJlAFSxEFZBJWW62249GH0BPp3W50mRamsKw== 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=Y/Oa90E8l9RHabuoh8TEkrscQG2omSaXuj2VkAUGg7o=; b=tRcx4lDtgc1MJsKZhkeMlgd6QWPs8VGZbpjikyXiY5LdeIGtQJ3Kzr3F/03UCGEeBOZ7ww6t9JJilrwmV8sGFPWQsrL2UGPKhxCWPY/GgOEPywrePxZ2y85jjQquHgdNaF6jB9yjbOILkfeWpe7Cqvr+GSYHzQNdJGVM0hLCWGD5AOeV+wSEexanuu/rLA+Ad2rIHc2EFLh9yPzsOtDjBxjJTenY4CfpvI1ddY2qH7KQb2GcCIZn7WUeiMERpc3V7T50WHTRrYQvEIwnjed3/P38ZQQ+0PppNvdj8d4P6OKIWFDwF8VjnMK0uaBg9dKELtzUhhQ8eUCRXs+cFitoXw== 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 DU0PR08MB8907.eurprd08.prod.outlook.com (2603:10a6:10:47f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.9; Fri, 16 Oct 2026 15:26:16 +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.006; Fri, 16 Oct 2026 15:26:15 +0000 From: Andrey Drobyshev Date: Fri, 16 Oct 2026 18:26:13 +0300 Subject: [PATCH QEMU HCI-8.1 v3 15/28] migration: Free cpr-transfer MigrationAddress along with gsource Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261016-vfio_v1-v3-15-47487cb5a8e5@virtuozzo.com> References: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> In-Reply-To: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR10CA0088.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::17) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DU0PR08MB8907:EE_ X-MS-Office365-Filtering-Correlation-Id: 36f47a33-cdb1-41cb-dd1e-08df2b99cf6a X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|23010399003|52116014|1800799024|366016|376014|5113699003|18002099003|22082099003|10067099003|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: +ygNgoduFn+PRnaFsuuXDerr1F43VtMO/clNEHg0ZDHgeFScYcHGYTCecc++S52MZdlvsvX3tVFl+Lc6op7f+PIONJ0DgGY+3hxdB4EUbamwE8nNQFIWqL/sMxyjB1NBYr7UyiAeIlzPwIy+fc2Pqeb+lupCkuyMVFE3NJB27k9vT36SBxw60G4dYgxhn3NXYnbEMs6gkdsrD7vvGvpaOkxWd3hZMxBdBsFYdPYKgzzbyemFeqI2nM6fRIUu5msWdPAaT325ofIZWB7GdMIzslGun83q892WKtHIXQb6kbCWVBTcJSvgQHb98njcT4xUyz8Bgz4Yr9bSkE0WXOfiBRWdmYKMBqA6jKUnvTtBS7SlqmeBnCizdd/yb3VKMU0Sgy7oCit3fZqFn0HpvlD2q1kox9nGl/jA74x2cMT5qrhb35M9gMZ7CaoV2jmJ9w+ecdMtuU3gCa6j33UqICpILJejYwDa2tW4E5YCw4Vx3UEZT89bBZuydj+k7i1y6tRFfYN7FJii6aUR0lRTcXuqv5eyTTmT7xef7zqQoeLXFUcbKY16XKlRu3/c6Qu2jMnCCwTi7vOigO3M2MtjmaBsFi920cZx9RXGW0hOYhSiGM0tqhbfvSiWPKR+oLCTzaiQLCl6/bsLbWiBX25+YkZN2Hipii8GzRCuqZJSL6af3H8= 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)(52116014)(1800799024)(366016)(376014)(5113699003)(18002099003)(22082099003)(10067099003)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K2QrV01uaXU1TS8rV1M4ajJESXNBL0NVZk5VUmIzVm4xVG55QVFFcFpCL2dF?= =?utf-8?B?ZW5WY2EzVDZQMWg3d1h3YmlCQ2w3THNZQWJHUDV1c3hsSXVZRlk5VHFuUWpR?= =?utf-8?B?UDFZM1NRMzdId1NXNnhWTGVURVZmcTlyZjhSNGRqZzBKdURFaDY4TEEvTXlG?= =?utf-8?B?RUZkT2RudU5YQks2OFJmSkpkTG9xSHkzNlRPSGFEeHlPWU9OM3k3aXBtcW5k?= =?utf-8?B?S3JnbjhHRGpqQTJISUZ3SlhxNzRuRjZDb2xJRndpMC9PeFR1b0VOQmtJSHZ4?= =?utf-8?B?K3hkRSthZVlMVXYwQXM3Q09tOTN3TnJ3MzlvQitndUFEMW0ycU9vVkdRSVpv?= =?utf-8?B?Sm1CNi84bGI1QXo3UWFVK09tcnowZEpyVkw1RjZCYTM4VnMxSnM1a21zYXYy?= =?utf-8?B?UzE2QkJxR2dYNkpXcGxhZS9udmV2MEdZcm5IdTdlK1MrOHM2d3BvZVFWTEZ3?= =?utf-8?B?UVduQ1BHcGlpc2MxRUFqbTlUVFc3NCtxUUhGQXNCZDVWRG5ObUdhek9kWk5r?= =?utf-8?B?Zyt4Nm92Y3drYkNPcDlITldxczE4cDJGaU1FbnRnMUdIUHRXeEY3eWJDSEZS?= =?utf-8?B?ZDZpQ0RxZ1BMNVBSWStCbWtNeGR6bzNRS2cxRGdyY293ajlpaVVVSVFuRjh0?= =?utf-8?B?dGp1MC8zaXhMSGptcG0vUVVpU2xSZVZ4RGc2U1JlR0FvWXc2QkVtbWFiNTZo?= =?utf-8?B?K2hxRTlLbFZWT0FRRXo4SnlRaTJrcHBCMHFFb296Q1VhOWZPM2xVdVNNTzNv?= =?utf-8?B?bk1lTEkzaWdrcVE3SVUrZW9DZWI3eklFVmxiUHA2QVZTK2VSZkxPdWM3OThK?= =?utf-8?B?b1I0ekNxMnQ4NjNNTkpqNUV4RFpjcFJqelkvS1dJNkxlY1U5eTJ6RVZad25C?= =?utf-8?B?VHBYdEdDNkpWUVIzbTczZmUzN25Jek1CeFlIRk4rR1BOTG5QNXd5ek1yeVlW?= =?utf-8?B?WER6dDRucW9WYXhEV0JEQWU4ZTAyVDN6dFlSTTZ5UUV4aXZGdXB2UFFZMFNI?= =?utf-8?B?emY2RjZxNml4cHFiaU52S1JpQURtWTd2TFlidk41c3lQSVNHdWlVNURRem9N?= =?utf-8?B?V1N3NmZFMEdVbkY0RWtQSEV3alZVdHU0eitlTWc3Z21xS085ZklYWG5RWFh0?= =?utf-8?B?dmZRMUsvUVpXWVpZK0JVNWZ5U3VwbUhMcGVPVGxtNnBHM3hsWXV0cWlWU3Vz?= =?utf-8?B?aFpVdkpCKzc1ajR6MmRJcWdIdUVPTTlsckNYMjE3QXRCY2ZXSHNWQ0tQQjhU?= =?utf-8?B?VzI1TXVERUNMcGJuWnZPanNyREFCTk0xY0FvZWVCWG5BbzFWeHdVdEM4d1lB?= =?utf-8?B?SlI0bmhzN2UzRGtLemtJaWxtRHRJRzJCelViOTJXU2lPMGhKZ0ZwSEpDT0tC?= =?utf-8?B?UGVWOWpWTlJLdStrbkxEeWhiTE9TWjQyZ0psbHZGNkttNW5mbWdzd2FvWTZB?= =?utf-8?B?WWFuSmF4dzVBTUdOS2ZiWUpkRERuNEdNUElkZG9pVGJCZEpFbW5vaW11a1dV?= =?utf-8?B?OU41WGc0elh1RTNuK1h4b29XMXd6aitlNUJvd0pDRXVQQjdsRmc2TDVHaWlV?= =?utf-8?B?S3JXRlBFZFlETjd5Y281ZHJJZ0xDMmJQTWJCc0NSbUt6SzA4YnMvSW1UeXls?= =?utf-8?B?cW9xeGplSFZlTmJKSk5hcmFwU1YzVFVRWlhCVVFFUDBWWU1TekF0UjRXT1lN?= =?utf-8?B?UmkwTXhGM3FscDFYWG10cVhYUEFqT05yblg2WDV1N3AyVWlsN2kyOXd4bTZE?= =?utf-8?B?MXplTTJCa2ErOUNHTkgrLzNCRC9QNWNTTVd0V3RINkRKWWlYUmQvN25IaDhl?= =?utf-8?B?Z0JPUDZRYkZ0ZTJyRGRZU0ZOWUJrYUMwb2htYmJJWG1ZaHIyM2JDdVZHelJF?= =?utf-8?B?MEtNcGRKd3lwa0JMRDlkay9LSm02VTJLNjBVbFhzU3pKWTFWVEZveUJubTNH?= =?utf-8?B?bTBwVlpQR2k0ZkF1bE0yakkyeFdiR1Bwa3Q2cEhBZElUZXdyRXo4U0ZEZThD?= =?utf-8?B?OC9sN1VSUnNwWmo0a2llSXZtR1hZNXJjVDgvc2Z5NnlsaDlrWDI4YmUrbEtn?= =?utf-8?B?bnV1MzNuQkZMUU4vbXVGbE5kdkdBRlRPbGRpajBGZGZTRnlqWkx5TGhCTzZR?= =?utf-8?B?NDhiZDJraUdFZWRKV2xLWFFZRDRpREhYQ0d0TlZFRGlQemgrYzU3clhsRS9i?= =?utf-8?B?VW1YQWErODZjVm5TeE1OekVhbVBzaHY5NTUzLzMva3FhTFk3MC85eU1namZ1?= =?utf-8?B?eEZHMkh0RjM1VitWdE05ZHZtWUNVZEd1T3hxRnJ5eXIrT1RvQnc4dnVJUkVE?= =?utf-8?B?bSt0Q2JybTV4dEtqRk1JbHdEelExQ0ZSaXUxbDVNZEZvMTRIUWR2Y3BidXdq?= =?utf-8?Q?CKIHqHWT4g+FWyV0=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36f47a33-cdb1-41cb-dd1e-08df2b99cf6a X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2026 15:26:12.1685 (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: y9dobyDrxFkYJMJfotAjG8n3xUzcYdyAkVY7sw55swVkVIlaPP4RhoAoUJz4TQa8fxmx/p9kYEqUHVcSjcGVaRSuD8Wc5daeo+z7yCcpF1M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8907 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 0b830956532..9ac11d57d5b 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2254,9 +2254,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) @@ -2278,7 +2280,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; } @@ -2359,7 +2360,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