From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021092.outbound.protection.outlook.com [52.101.70.92]) by lore.virtuozzo.com (Postfix) with ESMTPS id 02F628109A for ; Mon, 2 Nov 2026 10:36:36 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=akhoeomSzzJkg9JZdmkOTBVpo/WaCoZarPPGN/IbD6wFKZAG+VunbDD45EWhR329Qt/H8z5d6LIhJv1PNSmc68YZtuV+WkqV22C1ruzN2IW6Ax3HHRWqnGtKQKmH7d97wEwoqSfCH7MMC8+C8+2yRMco2aY9KHXGKfDEy00sCZYSukLPwJgjm2X3BGeTn6Hlo/TMf+qBRtQuktlCizDYCA0S11MBPyGuvBWvdq0bpu3lmdsHZAxVVydk+KgG69GuE8AumRjFWC3S7v9QhBJ8OeAwUoly4pc9ggYcUvMozZNtQVE4mlA+/CgZLz0j+4++PJA21Af6wLZAGLVFMEVwKg== 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=AWZx58oo1uoa1Bn8hw7a/y3x0BqL0ivhlzU3+VEz+0redGmbFH+t7PW0IduKPfEyEQnSRxvmEH2QLMuFtUrcCQw4830nnHNRP1IPsRO3dWGVaTcLHZMBqVhNb8b7nZLr77wGiL+3yb7vpNAStK/yYZkDtQ3X0O6n2hAH0KWlFAEecmOjTS5USVQZHZhJ4irtCURC68O2NB4PsgLC7xVsDua8VHAkE8T8zFCAizXRVrpBZFTAWspVIGDh0442BB4tYoUM/hWJa9AtDLW9pZvORJcTs5C5rj7HtjCb2sw7syiJ5hl4gYbaVyuDs3PLlOKezX7y2CEqoazTioc26jRnhA== 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=pxATTx+qcP5geGg2BA3d2lxF5Q7rNc4j929uDZb6Q/YU1Hb1A4FdjFNDZLHswTqyf9vs/DtPogrrZxDCNvhmLUlp3+k2YNvZrjFZ0s9z4+FyCbMnez3aOSXJOChc6HNAs5IfA0WL4/mkgSqSSqirHwYSYGUxvqVYb/7dOGAGaxrcvaHd5Xu2ApP+oe/fKINbwvrKC9L5G+T8/Vrdkg8a1F+hHCXVhwM9bz6XfnfJxpbFLi7miSrbVaj8KZAcG6qe7BHALakdOWOQPDKf7LWph0KsmN1oMkyBHLLMtEdM0/Aagd5QuiKZQo/bFX/wvBq1PTiVbA25wfMFGVDENEtN1A== 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 DB4PR08MB8199.eurprd08.prod.outlook.com (2603:10a6:10:381::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov 2026 10:36:34 +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.011; Mon, 2 Nov 2026 10:36:34 +0000 From: Andrey Drobyshev Date: Mon, 02 Nov 2026 12:36:34 +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: <20261102-vfio_v1-v6-19-9bc7cabc850d@virtuozzo.com> References: <20261102-vfio_v1-v6-0-9bc7cabc850d@virtuozzo.com> In-Reply-To: <20261102-vfio_v1-v6-0-9bc7cabc850d@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIVP296CA0048.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:353::18) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DB4PR08MB8199:EE_ X-MS-Office365-Filtering-Correlation-Id: 5854f86f-e841-4968-bbf6-08df38cd2754 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|1800799024|366016|23010399003|52116014|376014|38350700014|56012099006|261009223027099003|261028144727099003|261021123027099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|5113699003; X-Microsoft-Antispam-Message-Info: i7urln506IVPneOTBRmudVpIwB0xCLZ6WsrA7W6Ansath2ZmtFbMkxdLJ/mJJbQ68U6aPkz+fEY6tJMgJZfaUIAb0wnfcNEZzXSqvcOrsHo1rW1aQfHocPJS4O40HB4kVBvidmOXscm5MygAqyQFX9fUkYfxeW8Jawgmh4a262zVlHdyf/saA335j0hlMC73DZ9d0bRdPfGHuRfwvlvkzpaSa3rDh447Rqx8PqxrB5SNalYjyzZijPin3UrGF/YGUyl58Cqp1L449nqYqcT0mXRBic55fgTA5ZAngQ+0L8AI/j/AkDhrjDy/8CoLKviDDEfKYyQ1gg9NpIctlT4iek8esYWvfS0U0CFPgl/XyTNgYWNM3EFhz+r6MvjGwvnwfs0AT3WE9nlSpw7sR6eGsva6kZqZoN0fe7JtgCnWjyIdtMRvLsCCNTx/Kysnxr7SeBq7XHsUDWyFVg0rmK4w+JoU67unbFzfoY6NbvAgBr/OvJRvZ8x0+huyFEWYCW6zQzenZ6bw1L7tKYd6HmwQOKgskmcdBb0VxrCMH4/TokAgNMVXwdbV8VhfRC6+sY4M/CzcjeIwWjgTQ/1fY9HFCqA9z6Ig1RgKZueETLyJYGmKET963DdFJxf0lJchvvcw19yOSlm3pQc4KSYJeBW2rI0D1tI34f0vbbvwPIluBTiGC4AqYxQHXIZhLW//6R+s 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)(1800799024)(366016)(23010399003)(52116014)(376014)(38350700014)(56012099006)(261009223027099003)(261028144727099003)(261021123027099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QyszNFhKbHRzQU9uQTMyVGQrcm5FZllTeFZFalJUc1l1MDZYMXhUclhMRWU5?= =?utf-8?B?TGNZNFhGTXpXZWNGaG00dFBMWFpxUXVxcFlpOS80Uk1nM29BWGxPT2ljNVVp?= =?utf-8?B?SXluOTJ6MDNkN09yQk5UTHZFNUxnSEkxTFoxM1dMcDJZekFQWkpVT29pTE5i?= =?utf-8?B?WmFEVUwrSTdjbW9DWUczL29IOFB5djMwcUdyL2FXbzY2cU1HRUR5dStDWXRu?= =?utf-8?B?bWdTTkRTd0JBN3RxZjl3MEdJV1Q3NTVMUzJCWGsyaDdQbTg5ZkNrTEhmSVpI?= =?utf-8?B?YitBNEJuWFNPTTlZVy9CcmJVZSsvQjhwdjJvcG50VUNmc2ZsbzFka3Z2Vy80?= =?utf-8?B?VFdZeUMyUEkrM2xNYmpwV1h4eEcrViszc3ZSUERleThtbFYwQkF1MFVzbXZx?= =?utf-8?B?UXBjVXplSWxwcWh0T1RDQ0x2aVF0eGVIZWx6Qy9oZTJXekt3QjRnaWVMaEJF?= =?utf-8?B?a1dYUmlXaWx4S0t4L1QzMlpBTm9MWDFEMDFQMGl5Z1p2TFlDZERBNEF6MU9E?= =?utf-8?B?ZnNVMENrR1pKbFBleTYrSU9SRzFiMG96MDhYdG9KM09iY3JaWmJtVlFTaitL?= =?utf-8?B?WUJRUWw0RkJHaThXSWxKcDBFQ2hzdjNPTzZKeldIbWJmL1pCa01saUZxUElj?= =?utf-8?B?UzFwS29COW5qaUgrbXRhRGl0SkIvTHh3SS9nSlljVzRjQ3h1ZHdWaHRMVWJ4?= =?utf-8?B?YWREMDh4eDBOdXpIOVpLemZpUHV0K2pXeEkzakREOE1sa3RkWFgrSWJsMFNY?= =?utf-8?B?a3MzVVYzZ2ZINWViRW5YdVpiZVRlY0ZNRk1wMlZUSi9sUUxOQURFcnhYdklr?= =?utf-8?B?SG5xTm1tckhPRjdqTFN6Z3FvSFpSbmFpdHpLbnFESmpFaUIrNlhvTDJEOHZk?= =?utf-8?B?Q3N6Z3drMDRlUkE4SGFIUUM3L0hoNWR5MjB1YnQ4S1BIdi9ud0dRa1B3eTZW?= =?utf-8?B?TTJyU2lkV0IyNG5xUWYwRzVjcVJxcUYwVS9GbFRMczg2QWlKNlplRXpnMDE3?= =?utf-8?B?ejBGdllTR0hheENaS1BPZ1I4cDNSQjFiZVJDczlGbEd6bDdlTnQ0amppK2tw?= =?utf-8?B?YzhSbzF1ZXU3VmpGc3IwT21NbFhVUmpYakprN1JtYVR4TUZhSEFHZ1hTUk4w?= =?utf-8?B?Q1o1eGkzQW9KOWpTYnNaNlArcWdZNFRyRFFMeTRjbzFwM0FBbHU3K1RTMFBq?= =?utf-8?B?ejMyNllTMHBaS0g0UmtISGZTbHZ1dDY4Zis5UWpYaG1peFZiQWEvQ3VmS3JK?= =?utf-8?B?VW04TThscWhlNFBMTzdPbVNlNFlLcHdqWG1hUmFOaWY4OWJPcEx0eEFjTDdz?= =?utf-8?B?TUIwZGlwTnYwUkZBV0xqYmk3RkdVMEd3cFdGVG0vOUZaK0YrMDJtMFZkWSs5?= =?utf-8?B?VGdjaHJpNE5DNThGU2hLTjB4Y3MwMlFMcm5jY0djSytqQzhtQkpJeHo2WmZq?= =?utf-8?B?YkMzWU5NWmw0QUpNQUh3aHEyU0d3ZGJXU3hTcnpMb3F0RW9lMXVBZWJmeG9W?= =?utf-8?B?SUFaRFFqakVnZDFTMCtwdlNzT0dOWjBIT2NreDlCVXFGSVpXZDlnZjVRVUR6?= =?utf-8?B?RXRmQTFDeTNMNVVPZk1FUDJDVUw5TUxQdEgxRzJRTzUwN2NTR01JNWpiQTQx?= =?utf-8?B?eDI1Yldjc0pUQjNIU1ZiSFRwMFRCQVJLcU9ib3h1WVI2STM5cmtWN1E0Sjdt?= =?utf-8?B?UmxoSHpRZjBFNURZUzJaRkptNTNScTQ5MXZsclVvQTVIOWc0bm5NdkhsRUhN?= =?utf-8?B?dXFHd3BSeFVjaVFiSEpBdDF0alRCK3hyWUxqTmFsQWxPRUVVcEg0SE8wMDJX?= =?utf-8?B?RVBuRGd0TlUwV3k5MjVFaldUcWFUKzRTZ3JLQVdCSkpoMFpoUDFnUkpXRk44?= =?utf-8?B?Vk1yQVpKZmNtdzNrc3lrekVWTmdiaFl5RUJudW84R3c4ODFpM3duSlhxWlYv?= =?utf-8?B?MTBtTGt6b29jRlM4VnZXczE4azhGRUhkb0s1U29PQ1AzckxlK29ON0dNcmxu?= =?utf-8?B?UkM2YlpPSUZRVnVFUzI0eGlVVU5KMUtPS3RSdmpWYW5NUlFXY0Izb1JIaysw?= =?utf-8?B?SUdoeFRMN3pvVXNiTDRPdWV3M0pFc2U3Y05DS1NMdmxRWlpCSGljdzIwdHc2?= =?utf-8?B?eTBJS2Y1VEF3Nk85UXBjcG13TmdJc2EvVlNHNGZ0WE9xUzJ6cndqa0JRWm9B?= =?utf-8?B?VzdxYVlOa2NSRjFBaEJtcktKczZlSURXRTYxM0ZoejEwSmtPYSswd1YrbzNT?= =?utf-8?B?bkE4Y3dFTGMzQkVRaUsvYkNmSXN0UVdBMmQ5d3BLUFlmZWcvQjlQaEs5YmJR?= =?utf-8?B?V0VsN2lFT1B6bzVlTVB1YTlsa3FkS0pCMWo0T2NvdU9Ya2pKdCtEWENiQ2N6?= =?utf-8?Q?a3fao9wMGHvfLJwI=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5854f86f-e841-4968-bbf6-08df38cd2754 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:36:29.0201 (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: PfeB5blSP5OpE1LoEVev9M0JAM4vosxZWF4bL17CSxcXRbWNPK0wTcCt6sOzDE3eG5YdDwsBIOtqXaazYUGgZfLYB+Bseedt98KDvFiDkOk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8199 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