From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11023080.outbound.protection.outlook.com [52.101.83.80]) by lore.virtuozzo.com (Postfix) with ESMTPS id 748EA80CB1 for ; Fri, 23 Oct 2026 16:54:45 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ogXtiIu8MjzLwA7MTdSRqpcepJRjVLZTZUwNuD+fhmDQDhT8WIqCSuygAnfzLgxFDavER8w/XELXBwEvWiNJ8FGR35eXVr03a480rhxNOi/C6lc7M88Ah8HoAbbVCNZ10Wt5hnp/A7sRtT+amzky56Bqz7OB50SJcrsLo75hyHBwExMTdXbERpCOYWRPBG8hhlrv0GpTIxoEW88WHKiAj7XMwZvwN2yHX6CLeS8KaSOGtgZZum42pMlX1fOta1kpnnTPxyxyZ6ZO25TnR/w9iqnZ9Ie2AUwYeQ8aV2JkSrN0qDcDmwvfKgUNfeUiNDFS31/fyBPg1wX/QxcfRNWNTQ== 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=dsTKYmWFVtR8LY+iB5isfztVg4xmysZya4n2H6386RU=; b=BqNYzs2DJSTlipFxF3GAlzskhnMd52rqGEi2FJgs0Jv1vvMV8vEdlmCBwBccasEUya7K9hjDmahNpIU6QI9LuSWjaJBUwM+08f/xNMaVhWf0kRLWvpmOCENsGEuE+85K8hQSH5d/DgbfMnSM2YIZI+O1EwH6Rm7woOPHWo2iXkJZI3pJBrBcYDE7ux01ZokLZsixMlAUDBAzTojUBhNejCuVCPj19LXxvvn6dvdVP7FUBHJJtWHt7wlo73edD7UCUUTW2UI5uit/MFuWalk7Q+ANg8C/wIV2jYd8pdDX6UUzbjyxi5vWTa3Z0U8kXU3mi9a/dmifD9hKUleWGEZraw== 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=dsTKYmWFVtR8LY+iB5isfztVg4xmysZya4n2H6386RU=; b=OG/t59SCMq6eDOVGtjZB315tjC5NRiSclPjryjNhk7nwuRcqj3GmdBO6xqSDKCrpmrXy3FLsiWkO6m0nLh2M50pbatKxrvdDhdc/xYAIJL3D+PP/MuHIfAE4agn97CotuDZejXqD3Jqw6kl1GcaIo7l812OdaeoEW4ZDQ2nd3lqnh+wK02PiHeCdxcA5eX6NUEOCUwzZB7hY/EzFOSkblpF4O1BXwJeQAYiuQ1reW3D/zkuwi7xa+bnqVx3BnuZE48rYTiJ/Ovs83Fu94b27vKU+L/Fl4lPU0aSY+rff3V7S5KE1f6LH/aBFZy9oDAoZztbA/rpzlxnGyW1tXVRsjg== 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 DU4PR08MB11747.eurprd08.prod.outlook.com (2603:10a6:10:646::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.19; Fri, 23 Oct 2026 16:54:44 +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.017; Fri, 23 Oct 2026 16:54:44 +0000 From: Andrey Drobyshev Date: Fri, 23 Oct 2026 19:53:56 +0300 Subject: [PATCH QEMU HCI-8.1 v5 19/36] migration: Free cpr-transfer MigrationAddress along with gsource Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261023-vfio_v1-v5-19-ba0bf3c6d122@virtuozzo.com> References: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> In-Reply-To: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0902CA0027.eurprd09.prod.outlook.com (2603:10a6:802:1::16) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DU4PR08MB11747:EE_ X-MS-Office365-Filtering-Correlation-Id: 96db5965-2a95-4624-9e36-08df3126515d 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|366016|1800799024|23010399003|376014|52116014|5113699003|22082099003|18002099003|38350700014|10067099003|261009223027099003|261022105027099003|261021121427099003|261021123027099003|56012099006; X-Microsoft-Antispam-Message-Info: 5Mbo0Om5JZA9FVvicPz/ps+jLt3NgLDODhGp6HJ/YrhYNq2cmFRuF1VlLTlT3ql6aZgvaLH9ov0Rg3Q6tOsf0f2sIlubMHg3nDAaiEeHU8IWACdxpNwljVAB+Lb2owtSt7L24ZfRoZEbF1ht7exFaFmrOl/GhnhjtDzgL8QeiYRSAsEW7jdfCPbmLum9T5A4/9hchnb8La62jY0/ZoMa9amKGK8uON7WtNzbNgOPvhXpN6N1jgA3ql0rjAKzplA1UQJmomzDN08/T4tlw/0xDydrz73LfJtpAaYGcvVwkPeRjUWQv6uKLpCCiq4eGKwmAJoWRi00IInZHmPw/AZ5Ny8vorQuqKGlned7dsCfP6GHu78KUeeZocdkgsJvy/oL8UCqxUWYdFPpckDFPlJkmA7NuQVFk2MsrOlsKbsgwPY+i9M8JVAKDAWnA8tA4DOwL8w6W9zAAqDkXQFC5R0C2k6IWV+M+90vdfc8gpKOxmxCUkrdjjSPRufj/jlU3/xYl+HjjCYDNT9z24Qynx8/hz5rJZikp1WjGQtkmdcfIb4j6Udt7kSWytKzKYC9w5ViYCeA5FEsGlPuNFAk9De6QDRClFHpCqhu3H/TiI8kynkbctHk+d3pq6wAlu7GcywaNF8BT5EBgwm31Jt2WUvuVidzydkc1jdqjCbjCQIURIg= 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)(366016)(1800799024)(23010399003)(376014)(52116014)(5113699003)(22082099003)(18002099003)(38350700014)(10067099003)(261009223027099003)(261022105027099003)(261021121427099003)(261021123027099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YTM2ZkVrYlRGeU5vQllGbDd1TWh5S2VBUHZGOEFublBNbm1GY2JFZUloVGxv?= =?utf-8?B?V3BwbHF1NFBtRmx6SkMrVFN4aE9lSzJ0ajBndElIbUFLbExhS0kzT2t6ODh2?= =?utf-8?B?RVIzc0dnUjNYNnJSUVVvY216QlRYMEthV1I5ZzROK2ludEdBS1AvSlRXYXhq?= =?utf-8?B?dzVUMno2c3FoRnVZdG50b0hDNDZRenRhZEFiYkhlYk9mSE1vZmNhZ25pTU9P?= =?utf-8?B?Rjd4dE53Rkd6VG1QZXVBVzZRelhkL2JMcW9STFF6L3Z4dnQrSFZmcHF6M0pk?= =?utf-8?B?alJoekV4dzM1UVBNbGtpbFBET0lQbDNwei9LQ0pXNlArbThRRXNsK0xVeEdW?= =?utf-8?B?OHZ6akVPMjg2amxJanhBUDJxQjFzNnYxZndpdXJTc0trbjREYmFlc29yTnBB?= =?utf-8?B?OVJpUkVGOGFEWVA0dFBhcFpLdDBONndZbVlTODVNS1lJUU1rTWdLVGF1SURD?= =?utf-8?B?TjhtWlBtZjcwOHFydWc4M0pIRFM4RUMweEhyWCtCMGVQdHlDNDVSd04zUFdR?= =?utf-8?B?TDl6dnBWdmF0K2dRaHpkbUVRWEtvSnlQYzFYSUQwc0R6T3NIWmo5TkZSMjNO?= =?utf-8?B?VDBybXU5bmpHbmg0YUZhU0xqYjBVdTN0WG1CWmwvV0JMbC8wd05iNElSZlVN?= =?utf-8?B?UkU5aTJlYVhMTVFTa01CeVZuOTRhSWJpMVJYaTFIMktWUWgveDZNTCszU0N5?= =?utf-8?B?VTIwUVYxMXFGZ1NCWXBjbEdEV2NXVWZNellSWVAwa2pUMzBmbmFwazNvTU1z?= =?utf-8?B?OG54K1lJOFptMVlBUmIreGhMVGl1Y3grM0lHOWkrcXRYT01RY1hEY2RZanZY?= =?utf-8?B?OEkrV1RVYWZqQ1ltMkJBK1hZYmZ6Z1hIZkJ6czVNQk1DOERSM09yU1p1TVk2?= =?utf-8?B?d2o0T1d2ZDFreGxKbklZUU9tdlRkTVZJd2JkaHVFaVdHa0NBbEhvOFg4c0Za?= =?utf-8?B?c3NmeHByS1lxR3BuNUFHUmhTazUzRG9POFFaOTkvdnNldVFoZnRMakdIWHdU?= =?utf-8?B?MHFTRHJvbzhPallaOWN3OC9sUEhsaXdscjBwS1FSYlVSMkw1ZFlRU3QwbE1V?= =?utf-8?B?Q1N0UjBWTjFEblJVU0xvZ21UaTY2NUJTazNIS3Nzcy9LUVpYWmN3cSs2WU9u?= =?utf-8?B?Z3FrWmoyN044K0dQMGlGV3J6Z0Y5SElCUWxEclNuSGpxdDk0VHllU3FjYnF2?= =?utf-8?B?UUlRNEdtTmlUK0Q5bDdVLzh1VXNtTWJNL3hoRUVYZENzcDJ6bWczc3hlcTMv?= =?utf-8?B?c2lyb1B3enFwc0N3OXB6ZUcyMmFWVTRhTFRVNXE2bnE0UFphdThXNEJPYlRP?= =?utf-8?B?ay9CTXJnZ2RsQTNyU215ODFkckQyYUlrZlgrYXg1UEdBODBKUGpNc3lhUVln?= =?utf-8?B?SW1VVUxiVmRYUkVXZVFVMzFXWWtlMnV4WGxOWUVJMGwzMXdtUVdtT1BlakhR?= =?utf-8?B?azlGZnkxOE1LeFlUbk1iRXpTNnZHNmU4VHhpRUd5RktLWkxYR2FmV3ByL0FY?= =?utf-8?B?T1BCblk3OWFZNGJCWWg5UUVQNHhzV3Y3UW04Mk5xWHNMdnRReW11WXNFeGZi?= =?utf-8?B?VmxRN0x4c0IvOE5TdEZEdGRLdkh1MUg5dkxhdEs0VWVqUGRZTHlza2k3Yjh4?= =?utf-8?B?QWhFaTJiOElObWlXUVFMTDJVY3ZtRGhMZTVKK0x5ZEE0Mi81ZXNsVnNvdERv?= =?utf-8?B?d0o2dnhPZmEwTzRKTUdNb2RqQVVMeUd0QXlUWURET0UyaHpERW1EaS9zMURu?= =?utf-8?B?VTRmZEgzK0w0TkVmLzRrY3ExYzdWQVJKMTk3dUFHWk5vWlBIaGF6SDlPM2kw?= =?utf-8?B?Ujd0SmhjK1ZocHBjVVl1WThGeThZa3JaMnR6QlM3SzlNTHRYamdLZ3dSNWJR?= =?utf-8?B?aWEzbDBYMGhaVjlRdnBUWFRocmE0WkgwOElwOWVrcDYvTklla3FqVFFqemxv?= =?utf-8?B?a2ltak9zdERDVUJoRGs0MDZvVHBMaVlQQkFKODh6Y3ZGME8rT1h1amR3cytK?= =?utf-8?B?eEVMV05TeWw1QlJpOEVGMjhjSTFrOFpEek5nTnQrS0w4WUlncnltT1BrS005?= =?utf-8?B?NW5sYlg2YVh5RzZnMTdkdVh0UllBbUgvR0RrOWtrQmJFOVp4cjlLaVdzZnZN?= =?utf-8?B?WWRkNEFuTEw2ektCaHd0WmlzSFo2UTRlcmt5Sk15aTFrMUF2U3NaU1k2NEd1?= =?utf-8?B?ZUFYSWxPamNwVkc5YkE2Rlp5cW9yNThHeVNlVEQrMGVqbWpCTllxRWRTM2l2?= =?utf-8?B?VUEvbkhwdk16V0ZaVjFjbWw2YzU1Y29kbjduZ3lKU3BDU05MTnVFVG44cGgw?= =?utf-8?B?K05Sd29Lalh6UmdGbndEKzVsYjBSVVdJc05NRVRpYW54dzVia1pXcUNnNVk1?= =?utf-8?Q?nbr/Vo9aQ6iiv0v8=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 96db5965-2a95-4624-9e36-08df3126515d X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2026 16:54:35.6235 (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: Cc7AZ90m7AYVWbOIdoxC2VMvMKR8mPYafcW1MLmAucibEIstT56KkxwlY6CC4vOw02Lh7XmKrVj1wC1F5+zc5f/PylE1h/Hitpd+z4kOUj8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11747 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 cc88f70ae59..b365e413a84 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2269,9 +2269,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) @@ -2293,7 +2295,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; } @@ -2374,7 +2375,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