From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023101.outbound.protection.outlook.com [40.107.159.101]) by lore.virtuozzo.com (Postfix) with ESMTPS id 757618106A for ; Fri, 30 Oct 2026 14:45:52 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=avhQKZVCyw971kso7ttFMrXLpMeolsDXHRcmxEtGA3z2DlmGZvd/BUNGJT9bA1Loow/RFwPk/b6zbFtAZjSBjRoFLFbIV/wJfeEuLb4GaVQQfMIeIAXJZsrlUh8NojC89o1zp1E5SmDC9Wk+ZLC97DIpsWWu7e39QqbJvLgcbL+eUrVSyk++fNiC5lQ4yqPSnHQUwQ9aKqVB6sg6FUFMNG2A65X+pAhWy89vqBOboiWttdIiRTO0TYfQ5S6LeV1qaT7djNUfnqBBiBnN9pko13VHjhbCqxb1zsC9fSY5myVOGldVgOJ5/pYjuFEk0OYfH9UtWp7Rafjghc8ygIVdjQ== 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=Oh+28DGOIorGOnUWK/3Fg/HNH5POzPanBkCTIZ4aj/3k55GW0zUiripZO7cGqgDonrwnI541UHud+jbLOnVO6ahDTOfbtxOKaamEtsvUB60qLza+1GZWGDvdNJGpz58wi4Ov5wdkWNNvow2S42VQJ5ms+I2eS7WV9eloGvGvvKvs21eg81LKEvzC7sdE1v6ZtjqbJrWL31oA4WPbAfJFfXrRz3QMRhfVokYrJ8no+rmrhzfBHa8robPRHyzT+4JzW0LgBRiOP40y8tuTA4e9Jg3o5+bbwIvYWRNvCuOJBXd8y1L6wkzN3hH9Ny53JNgcbHKQb5ucT24hdGBGM/EQHg== 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=eAqmLCMwNjiX1230/5ZnxAkshkE4HBvXue9t1ryBsyxXEQrgv4LztFImwDAciRR+R8XTneLBsxrE4p8e/XXjA3jrTwZe0apgVrEl41k7aJHLFWtEFa+ByTIhMGk3RXpda50XD6CPjoLUSM9Nb3/go+iARdkgFJrx+75560sEO5r8VgHYGzSJzeuxdYn6/j+REhxOVuKu9NrQWNTTY1zFcmnAg4yW5FzOGZUorZtn7byibjraZFK97N5M5IvEKM6gRrWIHIW1NgVmnP71cBpHPtNjCE4rlgAaWlVqYduL7TboKJoycNww/GxG/eHclyp95uL/V8RD+CTTPpYFdAE5Yw== 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 AS1PR08MB7451.eurprd08.prod.outlook.com (2603:10a6:20b:4dd::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.9; Fri, 30 Oct 2026 14:45:51 +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.0569.008; Fri, 30 Oct 2026 14:45:51 +0000 From: Andrey Drobyshev Date: Fri, 30 Oct 2026 16:45:50 +0200 Subject: [PATCH QEMU HCI-8.1 v6 19/34] migration: Free cpr-transfer MigrationAddress along with gsource Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261030-vfio_v1-v6-19-45de246bc92e@virtuozzo.com> References: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> In-Reply-To: <20261030-vfio_v1-v6-0-45de246bc92e@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR0502CA0031.eurprd05.prod.outlook.com (2603:10a6:803:1::44) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AS1PR08MB7451:EE_ X-MS-Office365-Filtering-Correlation-Id: b680baed-bc68-4dc6-4126-08df36947c67 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|366016|52116014|376014|23010399003|1800799024|5113699003|22082099003|18002099003|38350700014|56012099006|10067099003|261021123027099003|261028144727099003|261021121427099003|261022105027099003|261009223027099003|261026121527099003|261026140227099003; X-Microsoft-Antispam-Message-Info: JOl+T55K2yw6l7EEtaaEi2UXuBTCijynlMduqn0FNjNzAAVey4sLw0NqBoPS/FRCFvERJPt5U8H9pfLL+ALgHQO7b+iOJH5DhiLLALxp4/BhOBoQTyeViZ3BQX5f6VmstpkjcTQKLHF7wjrN2bE5eRjC3GteJw2jn2JwUIonyuS8Alc64Ggvat5ns1s7krZBo5hT3O97o9YB+hjM37/UKlq0LEUJFF9gvHVgKmHirdlPxwTSPCQ589jY5YIXEJ43/OGl+U5Abfmms8bBop7O6Q9vN09PT3Ka+Zh4YWzlaNAnUwMpF6RjBFcpa4Sp40nyAG84C/gbwO1OjllFZGLQ3NyyxbCTd6k4VSpaVBo4O5bA1Rj7PvutfAZ0/SGo2Y4vppSx6LiepyHJLVAKmQ2a1hQXYaR85Ey2QifK9Fp1jCEPFJKT8ZtShwmomTbJZ9VqRR/MCF/IX0aXqYBAjYLgKQcpPQj+OwLKB+LZnK9w2PmQVgGx2OtiqfK76wyQerMrwPnOQLUlpdGeC1KlAStCnPvrnmUmgySpohFHkW1rQ/bfiR45/cYieJkE/sGkj8U3IHQPLApbf+yah+d9XULO32pilMxtWBMzCVCgBxx8AQ3X1YbRsD3ZCA7+EJe1lTh6+EdwHPP+Sqt/DqT4rjqDuUFsuQYdcQFve/K8mGkGOy8= 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)(52116014)(376014)(23010399003)(1800799024)(5113699003)(22082099003)(18002099003)(38350700014)(56012099006)(10067099003)(261021123027099003)(261028144727099003)(261021121427099003)(261022105027099003)(261009223027099003)(261026121527099003)(261026140227099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZzVYNEdadGh0eHh1UmZhS3FFUHJjUllNNEhQK21vM2svTUo1NWdCUTd4UHYv?= =?utf-8?B?bXhmMUNCaGtza2Q0U20wclF2dGZqd0ZoamZuak5ZYnlFTTRTS0VmUXczMHhp?= =?utf-8?B?ZUY5ZFBXSFYrSy9XWGVJcFI2dnczck5IUjVPbmV0N0F5c0lsNytDQWtyL1Bi?= =?utf-8?B?ejZoWEZDSERVRWRURndQd2hkeUFxRE44ODN0cHZ3a0wrYncwQ0t0RW5NZkg1?= =?utf-8?B?SnlvQjVJcE9kWklxNjRQTnA0TkN5TC9ZcDhwWUtNUlVUSVFuMzRXd3p5VFEw?= =?utf-8?B?cjVwVFo1bDJVVmlvYzNJaDYzV0VWUXcwbG9EZ1RHQnZqbXlqNXpCUFZ1NnFK?= =?utf-8?B?V2JHbXlaZXNWSkJQK09mRFRpLzNMT2dMbWsrbis1UWgwOWNMZEVmNnNvR1Zo?= =?utf-8?B?Y2ptN3lZYkJJV25YSGs0bVl3Z0JheUtKQ0Q3QXdsSjFsVjg4Tm8rT3hxNHBr?= =?utf-8?B?UmMwb2dlcUFidGYrL2E2dUFPRUhNQm5LL3pnOTE5T0FDaHNXeFVoVWxyb1pw?= =?utf-8?B?TURhKzFrUit3MDA5NU05cTc3eEt2dFVkNCtrV3BFbHFBd1JWTHRZRTJqblRt?= =?utf-8?B?YkZ3anZsejNFcTIwVXNMT3Q5N1pWOHhjVytVenlic3pLU29mdEUzVHJmOXpY?= =?utf-8?B?WSthZ0RudXR3VnRwL245OTFsaUppN0NOQnk5NDU0c2duZmg4Z3I5bW5Ib3Yw?= =?utf-8?B?cTFnRUJSVE4veFNFeVlJZ29SRkxwRzU5Vm1hU2tCSjdTMjdnSGlJQlZlT1pD?= =?utf-8?B?UnlBdzNSRk9JaHVBQ1FpU3RxcUNvb08yeEkyYzVuMGYyd0xxaVVodkh4S1Fi?= =?utf-8?B?Sm4wODFxblhVMXJrMFFCaStRZnRuTlc2a1ZXL1hVbTRYQ0tPTWw2dG1YQ2pk?= =?utf-8?B?TTBOVVVyU3crdEU1WnRzVGF0U3cxVEhVSTVmWEd0SEo4RjJrTk5yNzNycTEz?= =?utf-8?B?M2lBK1JncS9yZmhkVlBSTVZjOTM3bllCKzBWN3dLTElSWEhZNFBoQUFYRU05?= =?utf-8?B?Q1ZwQTBRc2c4TWwyUnd1cHA3NHlKUVA0SHJObzRTTTREUUxFNjU2SEhCS08w?= =?utf-8?B?YzhWWWc3M0JVLzBuWk5RMzhLZ2VwRG9hdFNUYW1XUUVUMi9xQlJQOFQ0dmk3?= =?utf-8?B?dzcvU0ZYekR3aml5NzdJUVh1T3kxcHpkZG9sQVAyQkhUUG9lWFJyZGpkalM4?= =?utf-8?B?N1QwaWs2MDVEVEFPYlMvRWZvNUhoVTVWcmlCTDV6VVh6enhUczBTbTVheGU0?= =?utf-8?B?VGh3NXVySmdYeUdCTzUrNnB2bi9xdFh6U1Y3NDRocnBlZGxFTG95cTlxMFlo?= =?utf-8?B?RlVFOEZHWW51Mzc1aXB0YmMxWjk4L1ZSWDE3V1BOMFc1d0pRc3pidEU5cDNl?= =?utf-8?B?TEhROTM0VzJPMEgxWXhDOElMbUJ5ZUNtTzRueThzQ3ZkVzBhUkgreHFYSnBB?= =?utf-8?B?d1RxOTBNV0JZRkFoUEwyTUtpZDFPNnAyL0dnL3VvVUN3N1VRM1dVeFVoam9V?= =?utf-8?B?Mng2R1FWUFdzODRaRzFLNnBNN0EwYktRR3lSTTRDQ0UwRlBHM3cxaUlqS0R2?= =?utf-8?B?WVpPVUI3VmtDa3JSZWRMS0c5Y2hwNURqcTRMdTEzNndweHErT0RXRUxSNnls?= =?utf-8?B?Q1VtS2hjbGUzc0VaU3dKaWgvOENRZTZBZEJCNkN6aEVabktOSjc2TERJMGZI?= =?utf-8?B?RzhJeGg5Q2tXcGwzZ01KalM2L3VhNExhejVNZE5hb0EvWVVNMnkwSDh4SnZ1?= =?utf-8?B?eFl5QndHaDVSMjhzY0E4SlRiVEh4YnhQcHR5RHBkOWxsYWJnS01nZ3dIT3BY?= =?utf-8?B?d1Nwa0M3aHhVSjNUaFVQSitPYkxOVHU0VlduSDRMZXZ6MFloNGRoUm9sNzFB?= =?utf-8?B?QUxLUzhDdDAyZHBmQ0Rwb25TQWw5RVB4Uk11MEtidTIxUkxOcTRuQnNORUtK?= =?utf-8?B?dGJ1RHNkamd1Y2MrSWR1OHpvK2Jqdnc3c05SdWFPaERrZ1J0UjdGY3pXNGF4?= =?utf-8?B?S3hFcWxZblB2YmJlTzZDN3pkYVZQRkNpMHdaczh3cVFvVndtQklBWVNrNFpp?= =?utf-8?B?QTNLb1hSdnFKeHFxcTFiVXF4Q0lUM1FRZ1NWR2Q4R1hOV0pvVkZ5ak1iU2Vn?= =?utf-8?B?a25KODEwaGJsMFd4WWJUZ1Y4Y21aVERGSUQvellnSHdSbHZmWFNvWVRwa0dX?= =?utf-8?B?eU9xSytBUFBmcEJXNjByZDhLM1FKV2d4WXBVTUlEVUZkZjR3L0ZuSkpVSUV5?= =?utf-8?B?ZDNUdERmMVczcXo5OVNzRExDWEVtelUzamZpb203S3dMdVk3UE5IKzdlM3pT?= =?utf-8?B?QVN6bXZ0a21yUmRHRDNQZ0hoOTExclZBZWNCckpRckord09oejcySGpzdGt6?= =?utf-8?Q?Av041wSE+iXMW59U=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b680baed-bc68-4dc6-4126-08df36947c67 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2026 14:45:48.1188 (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: o92cMZpqzgQndCpJqDa57ds061v76btBgMPShExsY3SA/uN8KgFn9D0DC2ur+LDxG8USDEYWC+oKFLsfwjM9uG2ajHAJj+hQ47E3X2pLdPI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7451 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