From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11021102.outbound.protection.outlook.com [52.101.65.102]) by lore.virtuozzo.com (Postfix) with ESMTPS id B185580B92 for ; Tue, 20 Oct 2026 16:30:57 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=H0o2E+m4ubYHRugaYiI+jxZJ9huOPQIPMXYFadOvuxEhLTBOM3MlgpzqqkFC86fivYLaI7q6ZwqIwNdTefLDAqVlyeN6e7oXDLCLTTpvasrX0rm6ZsJvBWI5VEl8JVJVMAYrTpv7R151dMxRMEKwxg272Z6ncTSW3FTeY1x7T6H4XVJLDD/zBB6+wcyrGsliBqL1v+FptSJ0v2ikkIY8QNkaPN8wvendo+Sr83axSGsdqvUChjdbKQeXIEwDVWWXF3ujL9o8vZy+d5I0kGICTCsM8CSsnXEWfRqKu4FINnq6mKN6IEFcrlk7adyVF+A2NV8Ic68GKRNfnJTI0Z/iLQ== 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=0zL/bi+CAgvuUy3B6QcWCsxIOF6wLk3SvjhbSOEK/bs=; b=EqE/ma3HL/mI+9x4EyVbraiiCGdjgw7/fQW3ZPNTC4l5DBiW+uuq4Xo01n6mWjCsIf0WoNeUwkkn8+IHSQaMJbwTfyFZ2bMxVFTqoilt3KUQD8YgIy7oeWkslZ51nNm0auZ4brZW6wcj6GXdfS6FQf41gXdVd9Mi8S23EGLzYxPohVYx7TtojHEyImo83+3Dc4AYetk19dt94yBp2eBcjYHctBnpvNmc/EY5d7hyeHWWr/n1YHiZWPMcmeSbHJ6HSKgjAo5CU/DBAwuhc0pRDhWco9XSrtAgRuTGB9NB40ts76Zx3wyQZY7OLO9JXrNhC+C+lOzPMPwR7RGX5bwcdw== 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=0zL/bi+CAgvuUy3B6QcWCsxIOF6wLk3SvjhbSOEK/bs=; b=ZuuHu3MehXHS2Xly/2Gcwed7kM1/Ts2LWWevcG7e9gbVms6RL8YmDCrivos84jLjbdeAC96TGGXSAjC1HD1+TWYFpEboogSH//9Dwgf3Lo5P3f6aE64RBmRrrJwPdGZRiZ0rKIz4+s3a+X5JJ83ebaXvVahPT5vckWsC5jKky4YPobzKDfrSbN18EoiVz5jZ+XZ1FeJwwgJPbhcM4nLRLb4BrN8k1NvT8rqFtH0BT2paUp4IkwnX+rAexbOU2y5nc4jw0BoaylvKLkQx/NSS1P9XC9Lx4aP5qJvdL0JHcjIE+SKhTXUc7NmzsBkcvO59V6BVPXl5TB2EYIOsSNWBbg== 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 VI0PR08MB10683.eurprd08.prod.outlook.com (2603:10a6:800:208::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.14; Tue, 20 Oct 2026 16:30:55 +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.0546.012; Tue, 20 Oct 2026 16:30:55 +0000 From: Andrey Drobyshev Date: Tue, 20 Oct 2026 19:30:46 +0300 Subject: [PATCH QEMU HCI-8.1 v4 06/31] migration: Plug memory leaks after migrate_set_error() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261020-vfio_v1-v4-6-83a5668230e5@virtuozzo.com> References: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> In-Reply-To: <20261020-vfio_v1-v4-0-83a5668230e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIUP296CA0056.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:34b::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_|VI0PR08MB10683:EE_ X-MS-Office365-Filtering-Correlation-Id: 1bd8d1a4-93cc-413a-cb75-08df2ec78279 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|52116014|376014|366016|23010399003|1800799024|261009223027099003|10067099003|5113699003|22082099003|18002099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: GCE11qZUUiLOGKfEKC6jNLZWm8o5vDfDyNG42JAosPjxhE/u/qquTR+CN1hJCPXCTZH8qQnpIkjMuBe+ZoUWfBXQ9LlYzQJX62fVpIlUp+KA78ZxdZTabp26gSUVsody8pmWDR9z4Kd8oYAOLhGfm8kQOAWf7eVQ7rvErQ8rOvOARNPInrunva4bfMMOil5epZFREBmRwRmG4UfRlBvjIXwqXF1zC4I+mXtxcNh4PGVUnyBeXjmD7GrCDAIX5t5IzGiBRq8Vo+lc4nYjBsBeSpS/GRDbeUUYWyx7g6+CBsmK13ET49M5JYzYpSQVk6e93aykmChs7cpbM3ZbpNjiVUNxXEWNXAE3OVBO6PWm1k+I12uhxfmr9PXmbP5CWZyTJb2YTsRl3NNgbK+vjVm+X2iIdZJuPDNcHbJSezZeKvDK7cPo+1+eAun+y5HITHOtUCEIqnuUl934chTqPl8s4HFQBm9GO+68K7bCOO4VkIJ6AMwFCYnb9Qa2Cnua4Gee/wgJkn/CBjN8fPKMhfosFwDLP3eCrY4uBZgaXeYcKg8f/CH4UAtWYq/YuffDyVuNNT8UMYJxGc1htDShOt2Z5x6mUeJBe+JvYHgUiRXdtsAQ0qQnU1td8cw7bIUqlkACIxiYTq3H0703xR1vhgoZ2N5W6MWL5Fx+Kjp0dSr2RPM= 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)(52116014)(376014)(366016)(23010399003)(1800799024)(261009223027099003)(10067099003)(5113699003)(22082099003)(18002099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OTk1cW9leHQ1Qy9hNS9HbEo2TXVZdkFmSUlJelZ4cGJzdmR1VEprbHJHdUtZ?= =?utf-8?B?QllLZ1JqSzVHdmJNZFMzbFNkSlJONDhvKzlMSGNaaUI1SlhjYnpOWTVSWDBz?= =?utf-8?B?S0FYM0tSbHd4TkloYjRDODg4YjExbGl1U0lXdFVld3pwWEtMck55eHZlYzVF?= =?utf-8?B?WkpXL25qdE5tUWU3eWxqTmpZMTdnZlUzc0ViNjJIK3M3YkZibzdjRkxSbmxB?= =?utf-8?B?SmlFTllLY1A5YmhNYk1qeU9qbmVLUENXM0t5UmF3ZUNVb2l5SnlTbFZVUG85?= =?utf-8?B?OWdNbE90MWlTSC95VkNWbFBveWY3UklxZkdIOFpidDJlbGl6RG9kOTB1UGVo?= =?utf-8?B?R2Y4bVFObnhGQW1aM0EraUcxNjhqbkxwN3RWbXhWWnFFNkNVMVdOcEFoMjJD?= =?utf-8?B?L0dHMlRCZGtvTWh6dnR2djlQS3liNkhuUmo1Um5xYjh1RWlXQlpULzc1UVEv?= =?utf-8?B?cUJIZytiRi91dDZKNHM1c2k4TEFsUHZJRm9NclhSM1JhKzQwY0h2YktPenNi?= =?utf-8?B?US9aTmZqekpYV25EelBYZncrdkRiU2VVUzBSeEFveWIzQjEvcWg2YU5BWDlV?= =?utf-8?B?K1h3NW5EOW9TNkszUFQ2dEN2OUtERHhOdVg2NVFXWUtHM3llZUpHdVVmdTNT?= =?utf-8?B?N08vVmtRQURTcDUxTjhOa1VMZ3NiWTJXcGNHYWJHNXc5bXJUSVppd3o4S3Fy?= =?utf-8?B?MFJzanpUNFFmWWxCOVY1eWZBblI5UEdQZ0RuVStZT2FzWUkxTjBqekxvbXZs?= =?utf-8?B?eitpbkppRXR5bjdscDZsLzdTYXpkVDAzRS9jT0R5ZFZXRFFqN2o1MXBiYVhI?= =?utf-8?B?TlI0OHU2cEdVeFQ2N3V4bURlTE9lNnRvS0dZaVNzaUY3K0RaZnY3TFM0M2d3?= =?utf-8?B?cXpQNTJ4NWY0VmNTMFJVL1BBcVNreDArdUNHMXN5UVB0RmZCNFB4eUhZdVpn?= =?utf-8?B?ZlNyVVRhb3ZkRlBtMkVxdit4Lzh4ZWQ1Nkp5eEUyOEZvaDFxSnkwWVEvb0pi?= =?utf-8?B?WXRGTXI4czFNWnhtTFcwaGcyOXU3dkdmMWlxa2E4ZlNqVXdiNi8vSy9QMWly?= =?utf-8?B?K1AxZ285Y2VpZlRiWWhNZmNjWXhZbHhLc1ZNclA5UGtrTDFRWW5jdEZRRHRL?= =?utf-8?B?aFMzUUhRRVJJa2tweUJ3cTIrUUdUSjVxa0hnOEZlN2VVUjRxOHJ2UHJ3YlVw?= =?utf-8?B?M29UelhsUGY3a1dmRUErVjhTb29ieE9SemtVQmxvK1VQZEtxdmIyWFBJK0lx?= =?utf-8?B?Tzl5WGROUnJGc1o2dXkvbmVQcHc3VWpTbTcxYWxsYnNaUzc4cW5Od3NxT3Fx?= =?utf-8?B?NFJ1RU9WUllLK0F2YUlzRmk5QjJIRkdJQktGbXI1SkJ2VklEdmNyS1NHZXQ4?= =?utf-8?B?UytNeWRUYjFNbFFBUmJ6bjZqL2M2M2RYbmxOR3JycC9yYmc3bldHWmpGNnND?= =?utf-8?B?U3RUbDBZM0lwcVVPWk1jYklhUTNWbHZvZGNPNGlBVVpUbUVQcGMxalRNcmRX?= =?utf-8?B?eUJWRVF2TWJWajJZRG1SNXVycWU5TlYwbXI4NzB0MmszMXV4OVhEeTkyRS9M?= =?utf-8?B?ZnBzZmlYaXlFNjFsQzR2L09ieU5LU2d5c2hYWWQzdThkcGVGQUtNUFFnSTNV?= =?utf-8?B?N1ZadnRnUk1qWTNabW5HNnAvc0ZuWDAvZkhRUjZNT0EyZUhFSExrTkFBWWNq?= =?utf-8?B?L0dmOUJDL3lOYng5M0pmY0pxTGxXMHhGbWkyY2h0UVI1b202N2QyM1I1dS9k?= =?utf-8?B?TUJCaFNld1RlSzFaMlhBTjhPdUg1WFVFcnZJS1Z3SVdnTVU4ZkdIcktGZ29x?= =?utf-8?B?RjlKZ0tPZE9DaTFWV2F4Y0hYNzl2NC9aTDR0VU9jUTZaNEJVeXZ6emZXUmp4?= =?utf-8?B?Mlo3Q1Q0bnh1ZDhicWd3bjIzSGxqalRNcXdoTmRVYUY1MkNtQkt3cXNVdVZB?= =?utf-8?B?M25kMHdJeDdTY29pcEw5NlNKVGVraTdpNHRENUo4eFJwY1o4VGg0aG1neGZ3?= =?utf-8?B?eVJPdU5aWlVET0JDcjM1VTA0dTZLazQ2SG1Wdk1iSzcvOUw0UkNpRDRuZ29P?= =?utf-8?B?MmV6Zjc2dHdKWFkwWWJUa21PU1Vja0hTM0lHc1RsZGh5VTg5dWs0UTVkbm1G?= =?utf-8?B?RFZWSGxGNW93UjdpeWwvWkJDS2JTbVFoYnpOUFB5TmljeFo4T1ZCZjI3MzJG?= =?utf-8?B?UEtONlp3Z3QvYUlSNXZpMVZIb1Npd1ZacEd5eUN6ZU8ybzVEbmQ2TGRkdUx1?= =?utf-8?B?dk43K3BQa3ZhZjNSRFhnL1JzMForc1ZDMmc4UUZXUUx5ODJqT1hDRWRUOEQ5?= =?utf-8?B?RElJUDBYMThiMDh2TXl1b3pXa01jUVRVcWpPZFk3OXBseUV1ZEx0UEpDME94?= =?utf-8?Q?FAw+oAfUGGReK1Ic=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1bd8d1a4-93cc-413a-cb75-08df2ec78279 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2026 16:30:53.3114 (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: z29x5HgJGxZMLmYDHZjPvDXKDaD1ARxsawiwwyIloVkStN5L+XvOgqcCSQ+/Fsb4fwuemOpDrC0hhHTDmPFxLGRlpDcQpEk+y7gS9XQK0ug= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10683 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 c4bdf2cb99f..d37293baec5 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -231,11 +231,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