From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022139.outbound.protection.outlook.com [52.101.66.139]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0D7B781069 for ; Fri, 30 Oct 2026 14:45:44 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TpZp+jnQZ8JYlfgofdO5CSdulVKaUgFrnf4gv7zCSWgo1HCqGK6FRdbL1TAVL5I2OZzLGM5WUUaGEL13PVYeWi1g8ndxDrsp0RKWwJ9/EiT594u5p/hEeywdy/oK0hIWNMSXiJenhqlty4C1GY6mWMunp34PVs83r56TMUnqciGAy99W0Ba5/iNHIKVUxbaYTlt65hWxxuzryQBaZvk+iRCPUJDAIDu8BLiXN+we3+HEPgf8j8zXJ19TubRFx4WwdCht6vJ0HHiTPQKzxybVqnuGL3jzyamAC28UnHepunfBF785+tzO6RI3YHUGMv2PrZtm2kpbhEp0gaK6qDfnjg== 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=wG3ajVUjQj3kBVQEpUmW6raBI6ng966539Lvg6czc+4=; b=cNRh2fc2Q+nvUmUewQoUCGBOAvR2r07aO2u0d8HN/ftIyEKNsZobLg2jfi1nkDshqa6lod7QPsFDXKL7J7wlZh1BvhFNWcMjS/kt04XBWjXp7Hi/mcM3AR0E9R/8lPN12d1RG/DSfSeqG4CHu7BLpqnW3Gz3cGzoiTABio/yHK9J2ZjS5WNSbe2841eN57JiiuoirTtBvEIoi+YXzimGdeCd3j5JhxA7hRSZxfEVOgf7to6eX/H5VU+XoaQY7mN5DC4SlfNqmXS5RC8BgBRMdp2qvGH1YTOXUam9BxuZwP8/rLTtGo97NF3buJibeYQI2bo44+SEiKytxcbeaMjV3Q== 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=wG3ajVUjQj3kBVQEpUmW6raBI6ng966539Lvg6czc+4=; b=ok6vJ36Zz82Lfju0Cxhx9+idP5CpbUbsC+sQdMaBzfgsh2T0KTL1iuKfVVUr6EsoHkv9h+MneTIPO/g+ZQtHQz6ptmCw10i+SGD2y/OEl4dNXC6e7iBRhpSmdSNaalm7nnF3g2EFEl+vDhqnj/pmpjvROQXOoXBRKlWlSTdfNroGYoSIKOebUXYlPVj7a2RZnarPGGgcBx8bLd1MU+QFUyNqgkbMddnnAIx3CWGD8/7NGJeB+wMrBrofOCD94tPJc+fjirjIIzn4Aj1AKYn16EQ5I0KeBI5JtRYZelw8wczcMwUTof8qhn9bBWvURtLkt0BUTvqhhTVkbqW9BmOyMg== 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:43 +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:43 +0000 From: Andrey Drobyshev Date: Fri, 30 Oct 2026 16:45:37 +0200 Subject: [PATCH QEMU HCI-8.1 v6 06/34] migration/cpr-exec: close the persisted state if the channel fails to open Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261030-vfio_v1-v6-6-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: ca014c3c-b378-49ee-39da-08df36947947 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|5023799004|261022075727099003|10067099003|261021123027099003|261028144727099003|261021121427099003|261022105027099003|261009223027099003|261026121527099003|261026140227099003; X-Microsoft-Antispam-Message-Info: UYWGRBkmu9xfYdVU2eO2LBCgzNkbXVa4GMLEmnr39G1pgEVW0oI/8+wfuMIhK3jv+7x2ska/2jsaw3qxauQ7DSTJiliXx7hU6+dSvRJaICEH+Q+y0503QPT+E7RbFvjSX5cBDMXa5cogO0BHNjSf38+udrejlibrQyoj+hx1iM1ZNtdt6mtVXtyq91EcoR2bbMrCT/+yubXYj6UhctbrWSX9oNd/VldaeBGyJl5Z06GewlUl/Quk9GhgTkExbMygBha2kjKCoXUz+fWxiXC1A1dhp0DVLFGnomJtdqISrCCWipwd+U5boKkiwp/a3aW8DQFKM4pP0JyKYbLW9ddsUCpQNi0ndfgpdnIkTn/NFkQiAghqObIsgO/UCyYSfaMqPkCX6k44ZQXlxVsLfbRKM9jL+IDeviKoR3bHRXeNTbJ+HGFhXbeNNiEk38YZT+j6I383vs2poP0dJG1EglJ2yu3lqHwle67llLdlsvJ+crBumitz9aB1wruGkm3b8lghJZ1/OsywT4janryXgUx2VsaplGH4w5muwfoYFqIsOYQEVXLyp3uaNFvt1+k/VlbO22XlS6tdAdFVO9dvZ3a/YP9/ImH9nvzcchtP0rUkXQSHbVnCLD9F/WD2xDXRA6TQMPcV/k6sC5pfkfE9DjSWO6mB4CqGHj+fl+1us5o3x7Jn1We0TBBkP8NA34JpcbQwmnyngeYOkwlOa2PoRIVgEEiqhQvkZqKf9mSJRneyYWQ= 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)(5023799004)(261022075727099003)(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?dlU3WEQ2cExmRDZ1T2ZzNDdXbzhXRmhIbnFZdk03b0hxVmc3NDRCdXBRSzNt?= =?utf-8?B?RzJwS053c1BuRlk4d3FvNmVxRC96OUdNODV1RGNxKzRuOGc2VkxmRVl3VitS?= =?utf-8?B?RUNmN1M2ekYvWVVnS0o3OVpVVmdBQUp3SXcxbHZGL2FEOERNVlZSMzYyOS9B?= =?utf-8?B?aTQyYndwT0NiTUhjdm9tRGVtUm1ZbmdnbTN0V09seHZzSTh6Mk1NbWpMK2NX?= =?utf-8?B?dEZUbldFeUlXZ2xoejJuMFJveDRiNC9xR2hYcGJhVkRlZFpzd25uSVJJTzdv?= =?utf-8?B?NFRRMm9KUUkvQXVZS3NFcVA2b1NBNmNZa2hvL3R2eWc0cW9sOFZzc01CdStw?= =?utf-8?B?N01PRnQ4TFZuVjdsQXNnT0xTZXlRS0wwNW15UlU4S2NiTmVGSndBOHhuMFJt?= =?utf-8?B?c29DWC9CVVlhNTY5cTZUa1pUemFna1BjSFBsbUpzR1lYUGkyaGdoam5GMUQz?= =?utf-8?B?N3YrcVZsNjRuNm1LWWZkc2J3elR6K2dKWk90M0s3R1FwVE1HR3FRcVZnOUZW?= =?utf-8?B?TFNKZEFvbmsxV29hOFBaQm9jSGU3VEVqSkNvOXRaK1JFVllMTTZzc203Z3FY?= =?utf-8?B?ZHNDeWxMZWNmUTlQNWlDMFRnWnRmRk1MeXEwdDFTTVNYSmR5bjRZT2VBa0tm?= =?utf-8?B?TnF6Zm4zeVZRYVVWUGp5SWhxbXFyNWF4SWU4dE1lVFJORWZVbC9PcFJrRHRW?= =?utf-8?B?S0FhWXdqSlJzQkNyWVRubW5DR2dhc0xVOUNJcExndS94QjF2K3VzY3J4MzI1?= =?utf-8?B?VG14bkFubG5DZUxsV0tNSUxBeXpMRkxyMEJqd0pXVlhkT0haUFg2bGwzNGN1?= =?utf-8?B?WTk5bmFwanhTSTJiOTkwT2xhU3JMWTBiS2tNczdsUkNscW51bVM0aXVRVjVV?= =?utf-8?B?MDNoQ09yM1hDNkRPMlhPalBDN3hOVUk5VG9QZHVYaFpTSW5IQnh0b2xqRFBq?= =?utf-8?B?RTJTVnRaeDF2OXpSVjBSejhQWjR5bTEzODVqNTRla3QzMndESHdRdUNwbzN1?= =?utf-8?B?aGdDU20rZWV3blpzQXliWGlaL2R3c2tnKzFoV3ZyT2cxTktBeHVvMnRzRkgy?= =?utf-8?B?bXVhU21qVjNMazNGaUgvUHZZd3N3UDZDWXJ1ZXIxK09lK1RvOVRsZzg1NFgx?= =?utf-8?B?WlJUQTZPQVhjb29OTFNQZFFoYTEvNnZqUjJROGpnL3FJdVRGckZmTXhLZWtu?= =?utf-8?B?Sm4vajVEM0pqV2ZIZGhyR1dGUkVuMHRFMjNlS0hCU1FKK1ExSHkybHdJa0ZG?= =?utf-8?B?MXZad1VLbzYrNEdmYWl6eGlXZHoydUsycElpc0dzZktiS3N2aHNnYjlUV3Vi?= =?utf-8?B?dFd1eGRjbmJWS0xTUnJqSndCV1JGdGRMd1VEZXg3WDdHcjBSVE1uY3U3d3VO?= =?utf-8?B?YU9rcXFVVWhhRTVBempLMVRtTjVWa2IyRW5mWVQ4WFFvRzl0VGtQenkrellY?= =?utf-8?B?T3B3YWFHc3p1T0FlMnJpbzB4YXgyeUZzQUlrMkdhTjgvVGNRR0ZxVE9RTFlO?= =?utf-8?B?bDd1Z1dROFUyWDF5QkpLMmRoamp6SHVGN0duNW9mZVBrVHhYeTJUcGpQLzRv?= =?utf-8?B?ekVvNld5clB5N0tJSjNHTlpGc2RuYVhjWmFDZGV4Mld5UjhTNXArL2xjTi90?= =?utf-8?B?c3F4a0JwWW8weEkxZzlNKzhyL2ExVmpiQkJaeWpISkJGYWROZXFZV1MwNUs1?= =?utf-8?B?SzkrNW9vbHFqUFB1UVNWRTJWVjBhQkVSaGYycDdUV2xOeDFsU21mU3U2QXk1?= =?utf-8?B?Qys1K3Arem53NmdHSTA5eW14cGhCdWZ1em5SU1I5TTFkcnIvZnBlZWczTjRh?= =?utf-8?B?SFRkcEducTNMUVYrS2pFd25ZYU5hcENnSHA1Mmp6YmxUc2t0c3NUYTRsbkor?= =?utf-8?B?dlBUTVIyZ1FFbFRsSzdTQ2h0N210Tk1MdXI5MjcrNzRKbnkzMVd4TWRWbjhR?= =?utf-8?B?YUNKYk5hS0tiVE51UFUzaFhwL1k2WDNHN09FaUpWazB4dmlicEtWbE96UTNu?= =?utf-8?B?TEtSWk5sM1hnakRMb0E3b016MTJBVjBIaFE0bHBqUjZ3YmRXYXZ1N1Ivbmx1?= =?utf-8?B?MXZlRHJCTjcyRzJpQjh1QUpIWUpjRXBqU2dDWCtZOXF2TWJGeFhDTnNDTko3?= =?utf-8?B?MTNyT3NuSWxMZ2xaTy9iaHBNWjlMQ3RZUXdLcHdBaVkwdGxBcG1hZEhZd3Ix?= =?utf-8?B?TzI4OGVTbEhveUc1UG1HUXJCdUV4dTlXbzNmMGliTWIvNHZ3dFN6VGVSV3FW?= =?utf-8?B?VG5QdG1NRGx5K2xMeHZyNEwzN3NnL0VKSThDSVQ0QXRRZHJLcDNtdENMd1B3?= =?utf-8?B?ZDYwOHN0b0pHNVB2cExZVWN1K1JvMFlMTCs1Y0xGalQxRXl2YWdwK2IweHd0?= =?utf-8?Q?Nfal/qiNQJKUipPY=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca014c3c-b378-49ee-39da-08df36947947 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:42.8910 (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: 5vth7WENm2txg7Epm0HoGMB4iY5ByHnrZZlbxppCG64dOb6CoFAkOdyeWTHDcdWCOu74jcxzbXOeagoCgzQ6n1TvnJ/xN1KLRu7tSONygRg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7451 cpr_exec_persist_state() dups the memfd holding the CPR state so that the dup survives exec(), and remembers it in the environment. Both are released by cpr_exec_unpersist_state() alone, which runs only on MIG_EVENT_PRECOPY_FAILED. The migration channel failing to open doesn't raise it, so the dup is leaked and the stale environment variable is left behind, once per attempt. Release them there, next to the CPR state. That path runs in any migration mode, so make cpr_exec_unpersist_state() a no-op if there's nothing to release. Fixes: a3eae205c60 ("migration: cpr-exec mode") Signed-off-by: Andrey Drobyshev --- migration/cpr-exec.c | 4 +++- migration/migration.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c index c4bdf2cb99f..d4214e6b379 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -83,8 +83,10 @@ void cpr_exec_unpersist_state(void) int mfd; const char *val = g_getenv(CPR_EXEC_STATE_NAME); + if (!val) { + return; + } g_unsetenv(CPR_EXEC_STATE_NAME); - assert(val); assert(!qemu_strtoi(val, NULL, 10, &mfd)); close(mfd); } diff --git a/migration/migration.c b/migration/migration.c index 132f0d403b7..7c2fd704890 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2413,6 +2413,7 @@ static void qmp_migrate_finish(MigrationAddress *addr, bool resume_requested, yank_unregister_instance(MIGRATION_YANK_INSTANCE); } cpr_state_close(); + cpr_exec_unpersist_state(); migration_connect_set_error(s, local_err); error_propagate(errp, local_err); return; -- 2.47.1