From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022127.outbound.protection.outlook.com [52.101.66.127]) by lore.virtuozzo.com (Postfix) with ESMTPS id E6B4981065 for ; Fri, 30 Oct 2026 14:45:45 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=QGg64T1Jiyd3xpHIHHtB8KwPve16eOCKzZztNitRyW9KT6kKUx4ErI8b61yGU4d0DaLkrCeAGzDSb91lP+Tlw9PIVikJ2ZU4V+B5O427SyGhoWB0cumTEfgoFcXAUKde6FBcDMpRhTOHxClnmDhaF37jjlr1WgTDw0er1miyJn6IGF/3bHfzhjcRt8+MgkrpMeHIgO8lurWl+LhWEsgPgDQratCpU9aijkCwa4rd7/hmEpwLeq/KM8jYxacGNkFhDhHdy0qtxonS1IF1kHBoDroFgQPxrxee6dX284jSR/CQqgep2OgSpeHyRSs7d2rHUhJTs+QV6NK4qu166t++ow== 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=JoFyWwPdl66lDBOVPUDTRl6Rzy2bcoN8Kb3N9kVDIzQ=; b=blZavGsouUDGz/MRzNgTUA7q4zZmU7IuWdZ/lOd4CZFoutg1L3IjQybU48lo6O9KDNP7JSiW5pKCeZVXtLsu5kAjWzD8em912kVMTV5hITyxYAkHHbY5P1p54Ax1uBS4iQ/aMS1Vt/6FtxwsKjS7SzUAyNgjl106pRSeAKjOLlcqbmdYn1hkBY559j+uZj66CwQG0x1hh/WA6/lr6TGXTFECcf+MXSF0kXKeFka0YbLutRy92UUtrg2nRjN071iiAwLsVX9/YYWYqjlsERaKgRiomIrqBDbRzCcDjjncxrpV+eYzQr6XGxQMSKgkGc5Mk1E5dcIueAxDY+BZvbRxig== 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=JoFyWwPdl66lDBOVPUDTRl6Rzy2bcoN8Kb3N9kVDIzQ=; b=NyOfFRsb0/yrJ+iLhIb/FSX7oLA+jCArGG1iBI8PwTw6Hxp9irmEoauS5a5GI1xAAqY+2r9GEagltFpt2cCAMK7DtdfRB9LdGPsrCoJzTJDLjkdVFTix0Gui364BOwksbJSQoe3ffhs19uROKC4pYoHEKt10wdA5m02gipM8EDpXsmjTFIA9boyX42NKw6wqfjLeKAOk6H31+SfdVM2T/+yTwovlMp+lmk+7KBETo7L/tEuLnd9w3XYMKpYX04qMp3f8XvAMvbQarmETR7/ftcL8GvSUOoN4xX+Y0WML9ydRodcOUSoD9HgMzKlJwf6DUxJymr+wtJOb1/UiVanGEw== 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:44 +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:44 +0000 From: Andrey Drobyshev Date: Fri, 30 Oct 2026 16:45:39 +0200 Subject: [PATCH QEMU HCI-8.1 v6 08/34] migration: Plug memory leaks after migrate_set_error() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261030-vfio_v1-v6-8-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: f76f71bc-9a25-438a-f935-08df369479c5 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|366016|52116014|376014|23010399003|1800799024|5113699003|22082099003|18002099003|38350700014|56012099006|10067099003|261021123027099003|261028144727099003|261021121427099003|261022105027099003|261009223027099003|261026140227099003; X-Microsoft-Antispam-Message-Info: yp3pyQ5PfrKylPcKJwwrhGKEj0PQhMs6GCp3zHOL80dS2WOgPQBVbvBCzxqor3wc8vuq/yacjdRAsuxt9RzktWqOjMqBxao9aZwns2iqX4/4if/ZJf6/gxflLXjDf5LLEracYeatnpkTs4crCnI0u/7jFLlmDvoI+8jjgutCP8xwUaL8hozHpguGBh0VuqIl6Lpds7g988J6BU0Gsr6lxL5W/wv1VE1rYhTf4DunEtTodv1AzTcHVixzG/CAxQcd7m+F0u0lu5396MSyMlh0VCbQHkKke6FVgmU0+Mx+qQKbhKdi9YhLsd46x9YOcHLK7K7SKIuz39MhCfA1RQuonGZlSNQFSjDPSPf0gbJ8h2ttUnV9UEf4H9lXS1jkjvfr38qh+6twjpNhjm0ROSvLKwj4LdRdakFdh99v1l22Ut9GRo2pLND5P9qeMVZ0q1g/gcgwJKJc7hBVdzja3acQ1gkXZP/0IM5jFZAmg+FV1lLGX914FuriJh4hyDR7ctGCItH4ayKW6H77Jb29ETwfjVlEf8NKep3yM8LedsFSzUMzeEe6Vq2Ts0BmTv4ZHCdszLZps/iHkjlbCU9hnZwO05uB0y4b2eMMPXbpmBoCyQ9OMxFY6F0k5YhJRPB/8LQQOaEtIRaLBkyqytnIubRaSYAC30dw1SuMD8eiUkL3+nQ= 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)(261026140227099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q3dUSExXRkg3cVNWV1dQRFJ1bFBXNXhxYUZHb050WjdSSzN2NFZlaDFtQkIv?= =?utf-8?B?VEhBL2FtTnEvVGxMVTRwblJoK0ZWekljQXRDU21WeXFieWtrLzJkT1RhcnF6?= =?utf-8?B?S1NJdjgwVFA5S3puMi81NzE3WUJxbU03aXZwUnJpVWg5Q0QrT2h3YXE1blBj?= =?utf-8?B?WDNDdEkrUTFEWWE5bzhDYlA1VWE3cFQ5R2VzQzVJdnNNR0ZkbGtuNk5hUURB?= =?utf-8?B?dFQ0SHNVSjhFbFJZTCs0Ty9pNU1BRzFnaCtWa1N0d1Q5bEdOK0xEWnBUa01o?= =?utf-8?B?cUxHQW51QlJqa1JoL3FCYndwem1VSlpmaTkreXdCaFN1K1drckN2Q29lMWRL?= =?utf-8?B?QVdKNFM4MzNvdDZtbVFpWnhBMTBjSHlSZk5sdGtIZk9LSHAwOHdSSDBmYjBR?= =?utf-8?B?RmhNbEkvOC93UlVNTHhieXBLOC9oSitJQ1RlWUQwMkRleE1mbTcwUVEyY0Zi?= =?utf-8?B?OGliMTU5MEhXR2FyN3AvL2JOdUVuMUYwNDNweSs1RjV6UFNjZWxrdUtEckdu?= =?utf-8?B?Y2lucnd0S2RIZEUrMzhFemNycFI2MUJCajhNVDdlelJjdHZ0Uksxd0RRU0J2?= =?utf-8?B?OHoxa1BveEVLVGEvME1GOWY4dy9pcXExKzdDOU0vOERmRnpvMkUvVFd0bmY5?= =?utf-8?B?Yy9NRjBvT09COGdVRFpIV201OTNvMit0U2tRZThoOXFWWnh2ZlRMYXVUK1d1?= =?utf-8?B?NW9za3ZyNXlmaDRtb1JiYUFpdkpWWmY4dkZZdFlaRXdLWTEvVHZxNFVib2NV?= =?utf-8?B?aHdHZHNmeFl1Si93Q3lXZEVlWWhkbmdlSko1VllOR2tmZkZaTlAxdnBPYjBR?= =?utf-8?B?YlZiMm0yNmVxVk9Bd1VrWFBHVzRVVVB0OUJ4Q0ZSNWIxdmM5Zm1xUnBiQVg0?= =?utf-8?B?L0c1dnQvdVc3WFJkbG0zMU5wVUtLeTU1b29oYWNmcncxWVp6TFQzejFUaFJM?= =?utf-8?B?cktxemFhcGZma3FRNTVWc1lEclpPa3cwcEY0LzlWaE01WUpwTlRLb3YxVGNq?= =?utf-8?B?blZMZkJYZ1RzemRNSWpOR2cra2NXUGF5Qmd3VHhrdWFLb3V0TFN3TE9UTUhy?= =?utf-8?B?Z1MxUmh3NVhFWTF5RENGY3FMOXlTY0pndnFhUklHc0NjeEFkYTd0VkRIczBB?= =?utf-8?B?azhla3JrYXRQWCtEVGl6WkRTN0lJd3dROUljNW1FYUVKK2MrWk9DdmowVk1I?= =?utf-8?B?T0RFcm0yL2lWVk1PTHdNTk5hcmQ4dDh4WVJHVndxUHFRaTRsb1lXVFhpUjBo?= =?utf-8?B?cERsbUdFSC8zbHlwZzJ1RzN6Y1FyeG44WTVSTHgxOWtqTDZTTE1aUG11QS9z?= =?utf-8?B?NTlURGNXL3hrOTJ2WUllZmIvT3BrVER0UHNzcDhFVktkVHVZMisxdWlpR3JQ?= =?utf-8?B?MmhyeDk1T3RQS3pkTnJTYituUzc4cEFNYWZpZVNYSW0wbk5nMFNSOEpRWDN6?= =?utf-8?B?SGxpMFlPT0hINWdBK3Z0SE5DbU04RlpBVFRZZFpvbHI4a0tNUm1BRE1sV3BL?= =?utf-8?B?MkZBYWd6Mk5sTFN0czIvb2VDODNHN3NJcDVCQ3BQUnRZT2U1L0VaSUdadzc3?= =?utf-8?B?QTlmcHNWcTJIbzBCbnFGWHI5MHNkT1AxVnJMV2xuekdHS3RObTVXRmNxS3Jh?= =?utf-8?B?V3k0dWQwL25LYWNWM0VtREZTcmF5K1NXMm0yK2pCSDlzSWVVZkwxazlPZUhT?= =?utf-8?B?WTB3Q2dsdTBKMUdpeGJFNmd4aHhweU5UQkd3NXhRdEd4RmZ4RlhsOTZpSXQ0?= =?utf-8?B?dzMwZHBuZWtUTzNPWlI2Z3ZPN2JCWjloeEgxbVBKYmMweFhreWNWMEpHR3ly?= =?utf-8?B?VEc3Q0labGZHdU1VWldLRnY5UHVQY0R6V0FBaXJQd21tVVVVRDMxQ2lBSzQ2?= =?utf-8?B?L2c0NTdDREQ5SDJVaEVoZ3ZNR3JwUTJ2ZWpyT1gyS1Q4THlLamhPZlErc0pN?= =?utf-8?B?bG5idkpHVk9PNzFSK2dDNThBMWhWWWRSMVdDaVZtSHRvS25mdzlNbnpRU2dQ?= =?utf-8?B?L0taQzhobWk5V1BqRFpOcnp6aHlQR1BjRDQzSXZpL3ZYdG9RbGV3OGlQdnAw?= =?utf-8?B?MkhPZjF2YXIybE5LeTNNTkJENmVheWdBQWplb3Exa1NPV1NWOWo5L01DRUpM?= =?utf-8?B?QlVXbWVqdE56MkxMdFd1d28wSEZnMkt5NWlaMmNKTzNzMkkyWnZ4M1NRNmMz?= =?utf-8?B?UDg5TEtEOVBIV0NJUHgweERRWGJxeUFqMWsraHF2VGFmRlJDaVpLUGdJYTBu?= =?utf-8?B?Q0FyaDd4RnpoQURDUi9DQVdIcjZWck1zaVhWWDBXVG51NTBXTmZUa2RKZUli?= =?utf-8?B?Q3QrRVI3N0NFUFh3L3pQN216am5qUkhBVE1KcE9vMks0RXhtR1ZmR3BZRlJS?= =?utf-8?Q?wLKmKJ7OpQRMKt3U=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: f76f71bc-9a25-438a-f935-08df369479c5 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:43.7630 (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: OQxGh01+tm7UyfXNV832VCYxCVsQ+Fn4VhTUETZvmUYAa+p9MliL7pVMFoKWUoOjtrrR1Va9aa8TDqe4aPe8SAPS6LG/TpLLKwlNWubGTb0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR08MB7451 From: Markus Armbruster migrate_set_error(s, err) stores a copy of @err in @s. The original @err is not freed. Most callers free it immediately. Some callers free it later, or pass it on. And some leak it. Fix those. Perhaps migrate_set_error(s, err) should take ownership of @err. The callers that free it immediately would become simpler, and avoid a copy and a deallocation. The others would have to pass error_copy(err). andrey.drobyshev: This commit is cherry-picked as-is, with no modifications, from the upstream commit 93817ec39656. Signed-off-by: Markus Armbruster Link: https://lore.kernel.org/r/20251115083500.2753895-2-armbru@redhat.com Signed-off-by: Peter Xu --- migration/cpr-exec.c | 3 ++- migration/multifd.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c index d4214e6b379..5a885422154 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -233,11 +233,12 @@ static void cpr_exec_cb(void *opaque) error_report_err(error_copy(err)); migrate_set_state(&s->state, s->state, MIGRATION_STATUS_FAILED); migrate_set_error(s, err); + error_free(err); + err = NULL; /* Note, we can go from state COMPLETED to FAILED */ migration_call_notifiers(MIG_EVENT_PRECOPY_FAILED, NULL); - err = NULL; if (!migration_block_activate(&err)) { /* error was already reported */ error_free(err); diff --git a/migration/multifd.c b/migration/multifd.c index 5a723ae25d2..e369421b3ff 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -966,6 +966,7 @@ bool multifd_send_setup(void) if (!multifd_new_send_channel_create(p, &local_err)) { migrate_set_error(s, local_err); + error_free(local_err); ret = -1; } } @@ -990,6 +991,7 @@ bool multifd_send_setup(void) ret = multifd_send_state->ops->send_setup(p, &local_err); if (ret) { migrate_set_error(s, local_err); + error_free(local_err); goto err; } assert(p->iov); -- 2.47.1