From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020096.outbound.protection.outlook.com [52.101.69.96]) by lore.virtuozzo.com (Postfix) with ESMTPS id 4A6958096D for ; Fri, 9 Oct 2026 14:56:08 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qXgA0TKUVj02/Ks3mhFsd5hhH1cH6LwC0tyuFOzpL8D1yEkNExN06IP7BsD0xyxiq7pZ0gi6ohOuq/v3+LQ/EHQXU0XjbItGUBg6U8Cx/SDSttHJ/lh1FUzK3rsfKo6gVKYf07O0S/x4iTRVGM6ha7zLJKwhQyB3+jhwssFJRg4jS3k8d4JBaNZq5Otq/uhOlPoizI879xEAgMqFzVM/Xu3ZZyefHclsP4DDCIn/OkSyYiidIr47A3zTfkbqYQBxRr6SguSth5zZKrtDm0tGAejzeIqUwlDD9as38sJWQ0lwwHZnPvcrS7vg3BR8yN1Xnmt0O+A0z0ArS79WxOm9Lg== 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=8k/X2Be6k/dLDlB2uMCJXMXD+kWjirmbxjhgQtVsvXg=; b=DRTBFf+53QzWxH2X+QZ4fUGf575MQ0aE+1cftaqZtCfXlGAuDxvTzxFPf0lrmyEefaaFTE+OqSOyf16os4urGgAjxUUv26juJZi5g0apXt+kl4aVkIuOMKG0+9XHR8BR3HumxF6EGgMovI4BUj84HkkxO1yEWNwR+KoHRnkzOqiUfLp+Bse/PQ1aBh3KBBi3MfmaIK52PDFtrz34vY1OCWPXjfnWz1a4XKXK3YWsnFbgoXDC3cKGKdSvG22t8t5WkSp+rO3UsH4Rol5eaveCa8sLXa3Kw2OiuKLIIty8Zzj8Jx/YvROf79AS+RHOM4+TlyGEK2War+U8JyDDjtkuHg== 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=8k/X2Be6k/dLDlB2uMCJXMXD+kWjirmbxjhgQtVsvXg=; b=A9KfctAs8F+mmKM7vO+NOEvj8bQS39UC1UYaf23xQPlutKEF8ReVUhkWwGXPYXVcT/Wprw/GppzJECEk8OeSINn2hpVM2Sa4M+hZB5ZTgs7ULkcEcHlngaOfZSHT+yyIYxPBGQpMqJNtt8YqCFBs88pXz3Har0a8uBI6jbzc+RStUodJQ3w4SeexgMT0e5SDOuQjxr+eyC9HwKvG89mM0bYNE2oumxQjrbRlq8yPsr3Ilht6ZcTnxcZvUEQvb0Zl7eGHCNB4oOFuvK+OVb7KSfC3x6doeGzw03cwO+c83wrS79N8xgZdB2AnThQ82BKipLVxb84aRb9xtA7tnvLPYQ== 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 VI0PR08MB11172.eurprd08.prod.outlook.com (2603:10a6:800:254::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.496.14; Fri, 9 Oct 2026 14:56:06 +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.0496.010; Fri, 9 Oct 2026 14:56:06 +0000 From: Andrey Drobyshev Date: Fri, 09 Oct 2026 17:56:00 +0300 Subject: [PATCH QEMU HCI-8.1 01/21] migration: Plug memory leaks after migrate_set_error() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261009-vfio_v1-v1-1-2ae91d5b8048@virtuozzo.com> References: <20261009-vfio_v1-v1-0-2ae91d5b8048@virtuozzo.com> In-Reply-To: <20261009-vfio_v1-v1-0-2ae91d5b8048@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0132.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34a::14) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|VI0PR08MB11172:EE_ X-MS-Office365-Filtering-Correlation-Id: 989c5863-aa8a-40c1-1d64-08df261571f0 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|376014|23010399003|52116014|366016|1800799024|38350700014|56012099006|10067099003|5113699003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: wqXVhUHk2PmxkBjj941eEuYuYkSjrXkU/N0iI3y8ZRIQ1l63qotgtToGId2L77J5YRF48MFMArzDqX6n76iZ+OxTJrsRWxhKUocq7+5uUAFz44JHbzDLWufZU5EmLaUQUv/pjSrp2uADv2AU+I40CDsRcOTASnJyNEmxv2QkR3b5CRYZ3A8yWFdmabamWhbf6qibZq8E5ACi9eiaBTTuYhsV7ECRIonBcpFRENV0p2TBmug+ZcKJOCci3KT0syxwrEr9okJE/snLaGaalRAhM7Ulsha9U21/XDCzhEKcwTOl+AchSdZLBEcF9EnhPNuOk/fJ7/vjvv5dKmtEJrIMVQnn7LpJRw/p11taQB+qGeLp1F+AYyXQ+d7evpJK0zCO7C03p8ZhmUuN0Ir5R2/Fp4wrc+GOP7ojJEyuqKfzG7+XtBQilWr+xZ6M749Yd9/xP2W17nQ0sfFL55Wk/t5lS7CkL5hAMA4Mn42wSYENYOblGgQOwdTocsHX5iMCU/NV1rEkYmhM9adg0eCfCF4ZPSMIXkUvDh/cyr60W6SfDM6fFWF4WMHwlrh7xkRoLnK0f7F1nnAjVKUvqwN1rtwTzKURktjk/GGt2VpxjC+r3GMT7MiLO3IaVbYZGWlzLz4kuKE5alW+SLAAYTEZIDpBGl87oqAVLZefg9Vi4jvL/aKaBavmeqHHSwDICGiEgg6h/cmLTLLk4UipFuIWBRzEPI65PHDUahsSqnji00yEubI= 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)(376014)(23010399003)(52116014)(366016)(1800799024)(38350700014)(56012099006)(10067099003)(5113699003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K3AvZ1g1MnhPTWV2d28vNGpmdFdoWkZzcGl4Z2N1M2VZZCtTQllTNnRRRUhE?= =?utf-8?B?K1dNOEFKbGNZUmN1SlF3YjJFd2JqUUVYQ3g3SEk3SlNsOVptZHlzRXN1VDBr?= =?utf-8?B?RXVzWDFsUnBFWGVYWUNtclV0MXJUcTd6WHJ5TmhtNzlPSU1xVUJZM01hZUpD?= =?utf-8?B?ZStZSThtK3RkYVpYL0l6dHFGakVpU2RRL2d2RFprWDdHMU41VHZtMUZXTW5H?= =?utf-8?B?WExMNGtFMzVzcC9PWWwwL1FDdWNqdGVNOHVRSFM4VzZCbXYrRVNnUmVWNWg3?= =?utf-8?B?clhCR1JBR2RQUzdmSENUTUlQZWJNbW16YXhYRVB6M3lFck9hWmRzN0xVN1Zw?= =?utf-8?B?RGY1QzlkS0lWRTQwTng1aUN6dW81STBZbEZOcXNtUk9zZVBoelZiNHQ5K2dh?= =?utf-8?B?MFpUU3BlT0htek1tcEZNaDE4dmdXdEhJNEJsVmxrdkZ1dkJoejIxNGw0WDIx?= =?utf-8?B?NWZja3NmemM5SGZMLy9SYjEwait0MHNWZXY1S2NiQytiSCswZUdWT0xybTNj?= =?utf-8?B?SG4wMGorMXRvSUtIM292eEFha01zS0xmWkxZN3BXV3NQSW5HL2ZCV0VpT0h0?= =?utf-8?B?S21obURaTytGVjZNWUFBR0F4S1BQZ3JUa2l3a2NqdWN2OW1jVkhZR3JzTFlU?= =?utf-8?B?WG5QZVpRYmtmU3BMR2g4bThXMVVRcWJtTjUxNUorQVZPRXdoMWUwVmtJVmFi?= =?utf-8?B?UitLejRFTGZzdkFUZmRGcDEyQ25oMEh1WFRDMEFXZTIzanZHVDRMbVROa1ln?= =?utf-8?B?aW9KNmZXMDRvYUYyc1VXa3FYNzJJWmF4UDE3MlR4TUdiVCtTbGdJNko2b0RS?= =?utf-8?B?eTlMSXFlY0tyQU5ZOE90ak9LaXp0bnlyOXVyeFRjbW4yOHdIeTN3QlF5c2xE?= =?utf-8?B?SURiL3ByZFdtZUFUY3dRR00rVzVGZlE3VElENGtWcTdmUW9EdkRaNlpKVjQ5?= =?utf-8?B?cTFabVhBQkVMN2c3bTBBQXZRZWZRc1F3RFNxdGRJYVlLWWZoM3MvZXV3TWRs?= =?utf-8?B?ekFZcHhNeWcra01lRENPRVh6cVRZTWRMUk1YTlJHdEdCSUVpNVUwOTloOE5R?= =?utf-8?B?SGlYVWFva0xwanpQUHprNUtmOTRSYW8xeVBtN25FUmNmbFNlakFhL2d4Ykpn?= =?utf-8?B?aURVcG8xVnRyaFRLalNKYXpua0M0VWtGckMzV3ZCK29PVWxQTy9xb0NHR3VO?= =?utf-8?B?VTZsOWpkdXlJamd5T05tSWRQeFFRYWpWWFVSbktBeWdDb1dlb1E0ZnhxaVhD?= =?utf-8?B?MW1RUWRCeTNKOUIxYUM4V1luZnBXcG5BditrVi9vNGtmMnI2Q1dNR2JNdGtU?= =?utf-8?B?YTVIRTU4eUJsS1M5TjE3eVB1dUltaVQvSWdLZlUyWVRsYmFOZ3dkZVhsaml2?= =?utf-8?B?VzJLY1hjL1ZQQzJTMGJDYzNoL20xSFVzZ0tvRGUwYnpTNW9DWHVRRFBuTVFt?= =?utf-8?B?eXJSZzI4MktWaHBIYnlKUmdFaHdlc3RiZGVmUlkwempnWktxaTkvSU02b0Nn?= =?utf-8?B?TW4rajRtUlplVlNQczZjZkNhWHNaNzRIbWp4MWs3aEovUFFaK3JNWGIveEJR?= =?utf-8?B?T3J0QUxCanE2ZGQ0U2c5cmxEaytwamtubDFsSDltR3hoVTZac3J3Q0ZpbVBj?= =?utf-8?B?VjUrSTE2cVNEcXZHWFRFQWUwNG8zTkNXU3JwZVJPeVEvSmpCdC9jSFJ0QVV5?= =?utf-8?B?Zldib3VxM21rRGY0aWNDa1BCVmoyM1ZFTU5ZeHhZWnRKaFBXdzdnTnFEYVRa?= =?utf-8?B?a0kvZi92Tk1HbVJOWVQ2WVNkeEpKSi80Q3EzZDhrZXhIR2RaVytJSldmTTZo?= =?utf-8?B?YUt2K2hzTFlTbWRLVVdsQkF0M2hPcUo5a2RKZElOOEtEVnZtZG1uVXhxWktN?= =?utf-8?B?d3lzYklJaWNjWTRrVUE1bjRKcFdFUW04cEZNU3U1dEp1c2UrMmhmaGU1QVhy?= =?utf-8?B?OTZDclFONTVDRWNDWDEycmtlMDJBQlEvaENRYWF4cE9aaEtCZkI0cGdseFdW?= =?utf-8?B?OVlzd3E5Y0pKemFuNVIyTlZYaGMzbmltY2QrU1dja01IWGJjMHJiUEFhNGtz?= =?utf-8?B?VVd5OWpIdllMRXZHaE1vWTRqN3I2anFBemhITEpRSFZUa3RDTys0d2lrTGoz?= =?utf-8?B?dXdqRDIyQ2xIMzVKTkcxVkVsVGY5L2lrUW9PMDd3OVorWWVmYmw5MUxiajl4?= =?utf-8?B?R2F5TTRISmV3R2Mxc25uamlOaGhjeERXUThBdDVJWkkwNzNTWWVQYVZhYzhR?= =?utf-8?B?YmhwRS9KR0hpbDNocDYxbFNpbVB0dkIrM3BZQ2NrYnhRVVFHWUtXa1Y4b1Vj?= =?utf-8?B?MVJUWjkxcEdZVVZmSFJKVS9IcGs2NExaK3Bzd3o3QkFLSkhCQU5EdWRPSzJB?= =?utf-8?Q?YPc1iEvdBtODDsgg=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 989c5863-aa8a-40c1-1d64-08df261571f0 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2026 14:56:05.8831 (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: gK4Is19PSsAjPB5wjuc23oEKWlkAUbhmuHX6YHieL3Nb5BRyQE4hUJkkItJNmG7wJY0edM/ujR+UMFP6uEPzQDEVO//3UU4/YXYGEeUss1Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11172 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 edace3f0bd8..7b7609e19cd 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -227,11 +227,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