From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020142.outbound.protection.outlook.com [52.101.69.142]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0DEB280A89 for ; Tue, 13 Oct 2026 15:28:16 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nSPdgH4yupkAP1Qhuh4qUjhIU/ZKnUfe49bNCNSX+XrNrjkVHyxRRY0oLLrmTflDMFc+On+rCZ8IxKPR/sJqGQcGICiFlEDcuDJPOP4sNAipcOhZrX6wItQUxUf3ucj0V1MBo5pjSZzADWrHaUD1+lAl9uJm1RPjhsfDK/HJrk7Aw80o0+LJ69GtQZ90GxglHOCwzyo0yiFInTKEebgS1fIkrrs/66Ui5Npfcbvk6FpehnfQqk1dyyQasEbJJdQUIDBOoo/ZYXqprYxHMIEOurzB/1Hi4qj0RE5xdL+onpgZrOX0lsWq4+C6BMFtnG1YSPPASbTCxvQIOJMhOqp0fA== 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=uAeDR24WkqJJPS/LXknx6Ssr4gzNbIgEVDSQIiTV/ZQ=; b=GuIjM61RCZ6CE4BNyVxSfTg6Mlc6XKOZCe/6fI31btLS/Mvjix/D2/N/blxFCwlWbXSvKSJe6k02NoausGPU2pCsrLUT4K+BvZKdPu8vMrqvd4gveBZiEHYjkwXASj04ojepx8IdEITpTccX+sNzJYkygb2SP34EP1ZB/GwP0V7CWnnuqCi3WVfC2PaoQr3btpBMlw3I7WZ+5CPLykdU+sfbgdoLuuWITZEAtPYwSfqQ6TDMI8upWp9ycDWTNrfeP6NcKfdAePtki++OK60smqrhIc/u3gAGF1nCsu723mJCY6NODywhSMsltK753BkQIa7vNIy9a4wBXX7UXlZoJw== 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=uAeDR24WkqJJPS/LXknx6Ssr4gzNbIgEVDSQIiTV/ZQ=; b=B4DC0MfMyGy9nbbKIlXC395dVLrly/wCXu3W+BoeoRpmXRGpuAwAhYIkaWYUCk0FS7T2qAcrDWBGLdSgDZ4W3zrNNk7kV3Vp9YqKP+GQcwhUC5IBtxRzVU6F1WZFEdpPxhI0qXKrNbj3Yt810xN5QbttmLLFR6Zp7iUDLdObV8KeuCEnHLHM/ZLWc0WIlt7Qpi5D07pIcVbQUqXcZRCEITTHP7zcnu0ss2aA0C05ucEz7kXbgyEsvd4vte3/ILtdNCkWDvQrPKufl3Rel1zRtSQJog5R9oyEr8rPdio9BeNNd+4B5+TQOSrOBQz5OAHlLzeUtcRo9sfoWGuKp+gAQg== 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 WA4PR08MB366192.eurprd08.prod.outlook.com (2603:10a6:1d0:30::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.522.12; Tue, 13 Oct 2026 15:28:14 +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.0522.008; Tue, 13 Oct 2026 15:28:14 +0000 From: Andrey Drobyshev Date: Tue, 13 Oct 2026 18:28:16 +0300 Subject: [PATCH QEMU HCI-8.1 v2 12/24] migration: Free cpr-transfer MigrationAddress along with gsource Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261013-vfio_v1-v2-12-433455c0a294@virtuozzo.com> References: <20261013-vfio_v1-v2-0-433455c0a294@virtuozzo.com> In-Reply-To: <20261013-vfio_v1-v2-0-433455c0a294@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI5PEPF00000939.AUTP296.PROD.OUTLOOK.COM (2603:10a6:808:1::833) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|WA4PR08MB366192:EE_ X-MS-Office365-Filtering-Correlation-Id: 70ad7252-c8f4-4c87-9d66-08df293e98c1 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|376014|1800799024|366016|52116014|5113699003|18002099003|22082099003|10067099003|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: I3HJLUx9ZXKgwzxNXQTdCfuYkwTjlhCVjZ/0eIMBgsXGnKhYS+APCPUe6CcSGw0VGRvdqJA2TmYzmBaV1eKNVJ5tJy6TouLV0cJypdC5CCJnK8o4A4y4BD7j6HaSaA8f3tHCCy0/D+SsAN1bQzUHTZ5OVCnpTUgoiAOhRUDIAjSMTBLlMUdfSWJlq1nPP28erggR40U93zYAEjwUf0mfdi0hmErMIMi+VBgqEtuizqO5Yj1zGa3yp+qX81s8J6cAo6JZmbqK5RNVdmnjcSHzx/h+6FfiTIY6C99sAqLOL/4Er4nnHDlgjoHLN+51IKmXSOIhZOn2SSvWPEvUGzP0yMkIQtupRphc/PWxX/5mcRPaywfgxchXutZ7poRayQdPi6+fOYZi1KvZGOwMiU81O9S6M2IcwtJyvnOGDZ4h0o+mOO6d/Vqsn/XFoKh6QHFniOUuj6Z1frL1pWIBApQNXCQUYJLuuMeymeme4UGZZPeJpVNbh2Fo9oPsL60TtlN6OeHg/tId9Xrj3QGOVG+SKGIEYPIpGGOhRuL3mTVRT/LY7czRaVw82igDe+lOf254Kw/3z8QstpoSf42+wu07nh6vxawkHkqm0J1iHOVhTVu6S0hNSWB4yTx3y+WZ5luSJ/8bApJU4O5yvzP/CzoTTaGglevJH5ofh2ih2p76/3M= 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)(376014)(1800799024)(366016)(52116014)(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?Z29UQ1VRM0dxbXExNzg4eWJnNGJnTDkvOFp6K01McUwzQjhLQkpIcXR2NlJa?= =?utf-8?B?K3owdW5yZDhrcVlMZ0xLenAvb2hrQWp1Tzhyb0laNCtTMmxTY3RHNkFVOE9k?= =?utf-8?B?Q0VDb2ZJUWQ2Y3BXbUxBUE10RFZwa2ZlRFd3RWhuZXJJOXVxL1pDcjZMRTVY?= =?utf-8?B?YkRqbHdwam5lNUlTeTFIckRCaDB5a0xSZFNLT3R3V0tTMFJQdUVsYm5UQ2x2?= =?utf-8?B?TUFuMERna1poM01YUXpWOXhoZ1htWVd4WmpYNHJrZDV5cm95TGhLS0xrNUZT?= =?utf-8?B?dDQ5VG5WdWRVellEcTcrd1UwbHZwMlgyUkFhdWh3N2NpTmJNVTFkVGc1Y29W?= =?utf-8?B?ZUxONk5wWGVEV0xpL1JodWQreWlMYk1rbHdJTHd0clJ4S1FiS0dCOWs5Z2Fn?= =?utf-8?B?NVlzaDlHQnNSMnlZaVZ5ZEtPT0MxVitudnlVUldHYWlNM2xJZ0w5Qk5DWnlQ?= =?utf-8?B?RTNKSUhJUThOYVNvZktjVUwxTzBzbmZmTHZyREFZeFRLZ01lYkZLU09vQ2hQ?= =?utf-8?B?NElVeFp5b2YrOVJqV0d5Z0ZPR2pPQlBTYjZyaDJ2VXlPbzlCcXVRekFiUHZG?= =?utf-8?B?aG1Ic2Jsd3NQaTBrK1hSVTFkSWZOMUVsZ3hFMTlCUVZ1QUJwSW5kd1U3bDZE?= =?utf-8?B?by9mb3N2R2VOam1RWTQzaUJpVEhYdEdOUTJlL2ZoWlVTd1Z5Z1dpSkxaWFFP?= =?utf-8?B?T3hETmIzTU84aW9QZHcvZkUrbkRlNHJSRFpobE9vaVFjKzFlVVFmbE8vc0c5?= =?utf-8?B?ZDlZVE5kRW5QS3ZUeDg4NU9EOWhwUk1BRUlYTTRoOEwrWGtYM3lEWHNyY3RB?= =?utf-8?B?UkVCQXA5Q3BuV2RLaTZtcjRjVUJuY1QrYlNZY3JzTm96aE1OYnk0elc2YVpj?= =?utf-8?B?TUZ0c2FaVlBhUmtKeUd6ejRTVG95TTg4UU5Lc2htUzJQcWlwZ0tVV2J1RUJh?= =?utf-8?B?YnprZDFiWU1OU2hINWFvMW5zZG9wMGczVGErZGJUNDU0Zk9OTmlkaWlNQlR0?= =?utf-8?B?WGhrRHVOaC9TRjVWMUdIK1RQaGczakRXcUxFd1o5MjVtaUJUZ25TWHNXRW1B?= =?utf-8?B?cE9DT2NDSHlXQThDM2M4N2Q0YXlxd3VzcHA2RWxNQk1mNUxyYWxNYWJYeGlx?= =?utf-8?B?VjZsRWRVWXhqZUxScDE4U3UwN2JqZnY3SkkyY0pieEl5N2JvNzFtS25NeGs4?= =?utf-8?B?ZEFHUTcxaTZaSjc4ZnQyVHUzdVk2RWJKMm5GMThlM0VmUFJxaEdLNjdCQlhz?= =?utf-8?B?TFluM0JwUWFacTM1QUpMWHhYc0JtcCtvb0l4SENncng4UkpCelF2dzRvMHYx?= =?utf-8?B?VmFTR0ZGN0NUSE9oM2VRemFaQjg4UmNGMXNaVXovK3Q1V2JYV3Zia0V0VWps?= =?utf-8?B?cXJVVHF6NEtkZHdYdStlZFNvSFp1bVNrRFFxNmFuM3RmMCsrZU1mZGd0Q29T?= =?utf-8?B?S25tTHh1c1Nnd0pnb3E4NzdlSldqNCtPVFpxNlJNZ2hVeTdRQ0dmMm91VzQw?= =?utf-8?B?VWF3ZmlQbGNIRUN5aEpRY2FCeUVzRGRzTzRZNHBNWENSVzFmMVV1Sm5tL1V5?= =?utf-8?B?NzhobkRlWThaSkdaeEdMM3k1Zmg2enhiNStNaFJkTzV5SkNwM25ZVTRpUVBr?= =?utf-8?B?NWtkTTJ5R3pURWcwelY3WVNCaDg4UnMvTnNBc2FOUW5OWHprVzdFR2NBTW5t?= =?utf-8?B?aXUwRlpFbXZWV283SkNSTFMxMjJDY3EyUk9idVc4VFdjSm5kaHBYTzI2Ulpv?= =?utf-8?B?bXIzQ1lSUVNoYWNEK2x0SlZ1WXVsY2dDTmo1Z1AwOG15ZWRaMlAzMEJ3OFBK?= =?utf-8?B?YzE2L2E5aDJIc0cyblJ0WFNFa1RwZ1hkV0FrNUFEeVQ3MUFObGxtN1gvNmtq?= =?utf-8?B?WnBkNmZHZ2ltK3BwREl5RFhibzFNWm1NSzdWQW1NUDNYdVJRU3Zxd1JxWVR2?= =?utf-8?B?eXcwa2lEYklMRkg5RFR1dU5aaUtlU1doSGlMRFlIZ25IVWdWSlZjbjlVOC9z?= =?utf-8?B?cFRPZlVwL0lXUGl3bDg4NTV4VHRPUldYZWY0ZWtPZFFET2s3MFB6OG1DNk93?= =?utf-8?B?d2xoTGJFL2xaVnk3NlVxMjdlUGhEZHhINmdRY0luak9LTmtobUVzdWo0S2NV?= =?utf-8?B?QXArUmM0ZUxLT1BmWjhrTG5Tc0xOZlpDcEtFcDNWalN3bmpLR2hqbG9iY1hQ?= =?utf-8?B?b1Z6V2dnV09OZW1kNW82VDNvMFhaQWhwcGcyY2lhMkc4NFlIL0Uwdk9pakxr?= =?utf-8?B?bENLa201dlkyTmVpcXI3cXJ0KytIK1RmQmEyQzRhMmNmNzZ3bmg4bDYwaUMz?= =?utf-8?B?ZE9ZbmtMWjdtSDZxSkVSNVc2eWZEdU14VDhob2Q5cHVNNGxHNExkVDc0Y0tp?= =?utf-8?Q?oku5EhFvEznBXucU=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 70ad7252-c8f4-4c87-9d66-08df293e98c1 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2026 15:28:13.8493 (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: qj8OJdQeOxlMfjPchA/LDV1NhnF2ZsA8QsZu3EGf4G1hdXUNZvz+VV3uf0RnnayhCrKURB0UkTC1v4XBF4+y/iRV5oFVuutLizhTLmBbmzg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: WA4PR08MB366192 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 fb83e8bc695..61d458b2562 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2245,9 +2245,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) @@ -2269,7 +2271,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; } @@ -2350,7 +2351,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