From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020105.outbound.protection.outlook.com [52.101.84.105]) by lore.virtuozzo.com (Postfix) with ESMTPS id D4C098017D for ; Mon, 2 Nov 2026 10:36:28 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XVQvmApB9UDUkFzMHu9/dNLlgUglal24LPTCDWr/Le2NLM9oVwwAoMKNFKFuH5z2l3YW+fJ5hiTjDqM2PbkmmvNWBPMac+Ck7d69lz2VjBVsKCAhvi0reh2slCpwV3Fh6VEdm6jVZCCG/TuifLz0hcVf5jR2OsWsEAdIcrmoDNp8dz6vgh5cxRsbmC9bm0VluU/+1V35pirIAT+as8rVPvsmNixzafCKvu1ifN2IX9UTFCs0I3ZmlUb1RLJI7ccot9evAx23wWHzpOTi7pm2bP4XCekLvvou/9xl9O5eMyPFny6/fsJtVcAH1CXF4vWScq+SfSnMGxEwF8oHoJoBDg== 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=FshZLXeZFFXCioXLAaDamHOiZvRxSgQZNApb+18HLoB46hELh8h6YE0OYZNjEfpDFK6Tgm9K2iygmX/2zFGVtCyWfh5+nMQaS2kvjgTQspKINg8c31fEyRjR+akp21GbbTe8bW/1Ml57Dx55y80cEvkZ9h+B1FKcDDwRoWNIOYgv//nB3m5IE7Z3xbL+ayM8ztx56SPcWzIm4Xv/bJ7Ccy4cPZxXBYVNBehKDdWxM0VbM9YzV7sOkRtH+gmx8CN23xxLBOk9mNjMQ6uz+fiq6eooJWGa7dw/Qu6UAl13PzEY2TU5Wk+hdQHDlo0eJFTb0V/Kx8/27lrVLP3v5SSa1w== 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=mPVYYC4WIZSnKsDY0jziYOX0ydxGEojxuQY6H4aikVVsI/BWNxlDkCggrC8A9YnFawppE6O/bzT56GoKcqLwWKdmHWTqgulM+YxeYnuiV0KGnsN1YqahGpT6yPhMLWOy1aXmq786j1r+TkqUMBhq4lcYUDUmEd6PliaAOhBO1s/kqujEDDiChrb+xdmJZovlFst2pYHV0KNyJeuJgh8FidZ7ConFi2gX1t4HXh3Tfg+P12QJ3er9FJpbyRLxY+91z0bvjogwQHsiA823xo20MijYe+1aC1F0eQf47xCKP6y76aUHqW3sU119CBJ+jx30YhCvx5qVu1MDUl2hmmwmWw== 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:24 +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:24 +0000 From: Andrey Drobyshev Date: Mon, 02 Nov 2026 12:36:21 +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: <20261102-vfio_v1-v6-6-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: ba3ff14a-e72e-4d9b-b1e6-08df38cd244b 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|1800799024|366016|23010399003|52116014|376014|38350700014|5023799004|56012099006|261009223027099003|261028144727099003|261021123027099003|261026121527099003|261021121427099003|261026140227099003|261022105027099003|261022075727099003|10067099003|18002099003|22082099003|5113699003; X-Microsoft-Antispam-Message-Info: 16M0G5ELlSFMnqsuQx5nfqF1np6d4aTx0eG+rQJro/GoA2EmGRxF+Vsz6b1Jc4oN0PJGWfhgWpBj/1y92xidoBmGL2fDswBqk7W7+qD/0w9Zdk43CK2qeR5KQ4d9qg6dVxIafRh8tUcgTYeqa8AUYWRoB0C1JLe6L7L47BlCv21XdM97xai+Y99BeSNige8SC8mcerd6Ncv1mQG/S4mbICLLPbZ/5Pt0aLpmLPGW1sik+fN7y2lhdk4A7W20AVvLr3fiqg5gSmHVtVrqiDvXQy9lrlJBaXnReVurvcxAkdSYsCmQ8VSHS99uH7wl1w632guaEKZ4gasvtltNUh1pcj+bh1V2T2M88bU6zr69vQXvzvHXYonwkuvUxhQc0Q/CSNTAjhajkdgXHRfgWRZ4IyMEYIJUsua90ciyR0q67+b8AMgawVwUP+w5VGN+mPXc8/x9x7KtTlEU4LRItQ+l5gg/roUKj40p/jgJr+klxTD8JEc4NDVuqha3nACVySjtsjw6xUnnBPSt3uN1AcuFGh1CU/qSHfcpx7an4L5pkaOBEdsGkEJP8O3yFuw3HZsQdgKH59sAnhUFW1PKqeOx3V2r197ld/Q2xDeyUSt0aX8qCYu3zhY37CywEvB55yyQuZaR7enXnOWAtekr3LP+kziWrqVgEY9WfFzcEFZKFyCbFraO03qTVCIQW6b9K+vvuMkKqAvX1pbbQNh8HXhwseHCJXhqAAjLmR8CRuEOJnA= 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)(5023799004)(56012099006)(261009223027099003)(261028144727099003)(261021123027099003)(261026121527099003)(261021121427099003)(261026140227099003)(261022105027099003)(261022075727099003)(10067099003)(18002099003)(22082099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cHM3NTBGa3MrdVN6cUNtVmdiNDFnbXkxdE9iUHFEK3I4Tm11OWNnUTBodVE5?= =?utf-8?B?clJpOGl0TVJ5cUhBNFFpc2Jka05CQTRnVmU5cVV5TVpFSjRNOFQ1MEhJcmxH?= =?utf-8?B?SkIzdnF6UDBIaURUYjVKZisxOUluNE9rZEJZQmNOVFF4QUtTSjB5Qm1rZ25C?= =?utf-8?B?cmpFZUxTSWR4RzNBWkhubGdzaWMxYkNkcjhkeFlqRzBiaE5oTjVNVTRoZ004?= =?utf-8?B?cUdSUkpCdXVHNExnKysxTU9pZnUyKy9WMXZSZ3p5dWpjdzNMd0svb3pOY0ZV?= =?utf-8?B?Mlducm9BMGtHdTROcVc3ZXp1ZzJZWnk1R2lSbHZSL1RBRFRUSFFWWmE2blhk?= =?utf-8?B?SmNyQmF6VzYwYmRyRGphRzJqTHVtcnZ6M21iSmFHLzIvekZRUStBSUROTExL?= =?utf-8?B?WlpIWXZCZ0RRbnAwSVR5WVc2VW01cWRjNTQzWjRlNnBiRTR2cmI3MFdNa1NF?= =?utf-8?B?bUNxbFE3YzRyY3lrS2NOMHExUlhMT0Nid283bStFam94ZExDNG1ZbWNLY3o2?= =?utf-8?B?TzMwOHVGdEIrOHFvL3FvVGlMdkdyOEpTSk1jYnM3TnZLU1ZKRURmTmJVM2Jk?= =?utf-8?B?ek9LM1c5Qll2bVJxOTBlR1NHSlpiQTNDbUNPaWpVMUYzSjVSYTdZOWZoZG8z?= =?utf-8?B?MTNTMm82WHk4SkFRbDd6aFNnakUwaTZ1NFBISlV0bC9JdTY2b3QwbFJicFgw?= =?utf-8?B?SHdiRjkybjducm42NWVjOHY2WDBkTm1neElwZkVnbFlZSW1kTllIa0IveVlQ?= =?utf-8?B?dXFCcTVOeUtvOWg2dFZueElMb1RhVFNyVTc3bHoxRlAzOTJIb1lFUGtVSmZn?= =?utf-8?B?R0thaXUyb1ZnMlpUSFVJZW1FYkFtVjVVSzg3V1R2VEVwa05sdkd6WngxTzVS?= =?utf-8?B?dTd4YXEzbStENGVYUmFYaTBqWS9ycm5KSDBpSGlGL1N0UlVxSGM4Q0YwSlV1?= =?utf-8?B?c0VVb2F0VXdtS3RuVGVKdlVUbzN2SHlrUXA5dVdrRGhNSGVYRS9jWkoreFFu?= =?utf-8?B?dEZhUU5YL0pTQ21zcXpFNjFtTlJpcTM3T1JHVHBnejNyTWpQa0ZMeXNrYmcz?= =?utf-8?B?UzVWR1MzdDA4YmJHZTkvMjVsSlRkYi9EaEt3dlF0SWIzQ0l3ajc3WTF3czZi?= =?utf-8?B?TGdKaXhQUVY4NEswd2pWTy9GTWowMWtiK0JIN2U2NkUzbDdMREtQRGxrTWhT?= =?utf-8?B?Q3ptd2o4Q3RoUlhVQ28yOGFyOGk3ajU2RytnRmZFbnp6YUZrRDF0OVJmNk15?= =?utf-8?B?NllBbUdPRFhqamkzeVVvOVNCZzVadE1nSGI3Q3piRFFJUXRJN3hmck0zVUZa?= =?utf-8?B?dEZnR1NMWVlycGhDbzBtZ1NjSXNZdy9iOUJqeWxhMUlOL3RPZm9TTWtMRHRN?= =?utf-8?B?NG9CT2pNQnFmOWV3eXJLZk94dGRVKzd4TzdaTGJIL2ZGUGdJeklTeVR5Q1Z4?= =?utf-8?B?TmxCOFowWUJJRTNSTktwRHE4U1EveUR2SmcwT0JLTHQyb296L1p3MURmTE5O?= =?utf-8?B?aEsvUnJaRW85cys2aHk2QnF1RWsvSXkrYkFtTkVXbGNlNmJsdTBMYVYwZXRi?= =?utf-8?B?UWVvMDBlRGltSGpJK2oxMlcvL09OcUEzTXYzaHVieXRmMFM3VHRtZWJPakMy?= =?utf-8?B?aDlUN21oK0lybkZMSWIzd1k1MDJJRWxxeWZLOHRFVXpmV2dJb1dnQ1NOUDZk?= =?utf-8?B?UnhRQ0Q2MGZqMEM2cDNHVSsvOGgxS2ZRZHF6M1VGYzk2aGorMGhEVXR6ZTRE?= =?utf-8?B?Y21WMnJEVU90VHVFRURYbzRYbFlEcWtVcEpDOTlyNnpEd1E2Qk1MTWsrdTQ4?= =?utf-8?B?MDFpc1Foem5lRjRyWVlvUkU4VTdjY2RBYVhkdnVKdElPU1dTTHduODJCRXN3?= =?utf-8?B?cE9vY2kyK0syNis2U2FKS044TUZlYUhaYzFKSVZZYVozWGFSajdyS0E3Qmhj?= =?utf-8?B?UTAvSkdpOGFyQVU4dXFWTGhjUkplOXBQOUFIbGhNYU1vbkpUUm1iaHk1Q1dr?= =?utf-8?B?ZHh1bW9lWmljb0VRR090YkdlVGZ6QTF0dm1FeW9yUzh2WDBPSnNpbEt6dDNG?= =?utf-8?B?Y2l0VXRCbVhTSGhFQmpPMjhKaStOY3NIeGNwT2E3b1cyUGxCaGhMbGNTR1Rj?= =?utf-8?B?YjBaamQrQXpUbmJxanVpVmdhakpPZGJSMlRGNW9Iak5HbDZ3dDV4VFhHdUg2?= =?utf-8?B?bGVWZkt0cG5kZmJYU1RvL0dFekpLWVZITVF4eERmYWY2b3RlZGpyai9DLzFR?= =?utf-8?B?VzFweU9GdVA1eDVvazVmYy95ZjhhbW9EeUduN1MxY3laQ0t0ekRSd3VNR1Rm?= =?utf-8?B?emZJU0E1ZUNIRGt0QmhpTTNTSWFRblVzVUhzMnZBSHFRTnkwOUtiU016THd0?= =?utf-8?Q?88Hjt4uQGtG13Obs=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ba3ff14a-e72e-4d9b-b1e6-08df38cd244b 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:23.9449 (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: ZVJh43uRnQ3iMX24BzFgUfOTqaeNANfF5u2LNcrohLX3tox+U5wNrZu24CmvzfbT2aTRPoY+svci+EjOyncoyYlQ3qI70NpC541AWGiy0/I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8199 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