From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023131.outbound.protection.outlook.com [52.101.72.131]) by lore.virtuozzo.com (Postfix) with ESMTPS id C3BE58017D for ; Fri, 16 Oct 2026 15:26:12 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FvzD/7P4J7Pm/n2Uy/fpgz89+12fWOr51RW8WGDKWr5DQfMEi1FecUCQsLl9bLBry5Xeax3Fg3Ks4AOOnvTtQNsM78Pf3FufIs5m3g473MpA211MIuqzWeM1XeCMjDe/pql+lFhWh5iZ8vP/oBwTFEUm1FYYu1Apugu1KgTt2WfuZC/lSSez9iWSB0n0qstzFqNG6RVj3/0AHcIAoMaAVkPb5NdXsLUd1KV/lsVr4xq8VCR4+SqY27rzmyfi9xkki+Tcn/+OIBRjNrSrbOSnAmDcJTjtit2+pMPumWiYeVzZMwXyIcBH9phGshFWYk2P0PPBJ8bKC8dQd+68+uppTA== 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=ibeDBqUe2WKi4BiiO6L7TdDg5AcifXLjNT1Cjm6cWbktjzBiD/fJTZQxSnkAZIFB39qHiz0dKAbbVnoWqfJiHqkW8HBq9+zEI0fx9LrZxAip6kfjcRB3VUMCwOVsBUjNtPTmvwpUJ/2ZOUEaaApYUdL1CQ0YaQmdIeYTn9Wmn0Pjng3RQCnebaA8xq/A6KRtEGc+iwcLjEPdshu6zrx0OagXKToQnon36Dnm+RlyP7pre3oG8XyGf4h1DNAs7mxJGuizg0HKQJ+LnHCzGd8qsm1L41t7tY87vopRBPvAprAM1CzSJXHAt5ebVA5zTbowk7t3ybnAbMzkNLOTR2yP+g== 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=YFjkBZkU/orWp0z0MTPH9osX5V2ik6JmtJCfQeW5nyYMOH6fzGWj27RgRzjfrckZwyEMx5Vb/6U74rjU42Ppf+2JgysI0p4mbMofotf/ZqsOlZY0FrBplHC6NRcyCg3qIhkac2dTDVbpLEBTlfPdYQRdM7Mrh8XQ1tF6iao6ZiyRaBwts1vec+Y2lXQxcme+ShCEambv6UeSu/Kd6CCjECRJMflVuMBcfivRhMwdBDVGHtT/+sADLI1VYcJ2dD++B5jg8/L1xXo6935ovuxT5Duof8WzoiPkWc2w/SM7O6nx3jnPhfUvCqMY9d6iZQqj5bM4N/AfgRe/gGQfX5telw== 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 DU0PR08MB8907.eurprd08.prod.outlook.com (2603:10a6:10:47f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.9; Fri, 16 Oct 2026 15:26:09 +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.006; Fri, 16 Oct 2026 15:26:09 +0000 From: Andrey Drobyshev Date: Fri, 16 Oct 2026 18:26:02 +0300 Subject: [PATCH QEMU HCI-8.1 v3 04/28] migration: Plug memory leaks after migrate_set_error() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261016-vfio_v1-v3-4-47487cb5a8e5@virtuozzo.com> References: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> In-Reply-To: <20261016-vfio_v1-v3-0-47487cb5a8e5@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR10CA0088.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::17) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DU0PR08MB8907:EE_ X-MS-Office365-Filtering-Correlation-Id: 152091d2-ed19-4b2a-20b5-08df2b99cc8b 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|23010399003|52116014|1800799024|366016|376014|5113699003|18002099003|22082099003|10067099003|261009223027099003|56012099006|38350700014; X-Microsoft-Antispam-Message-Info: fT9aHEFCu7afgQyfhaY5hP5CWxknLHa2Q1bmCHEgwgn6C0wp9JRbsMZ+8cMzHjVqtpj3LhHInN5tK2dAEjDex3P57X9SbOegl4gld/8lxq+IdDXEL+Ez3N2Kw71yCyj2g6HIRR+fSixI11xaN6FQ2H0jvrDtljWV1gn+uDUmwcJ5VBjpXW5mIUroffnKb+vNt5ynSu+mygq7+EckEnxxx72iLlXPL3z/SDNgsoybCh8XxF9zgLqfCdV4OaBjBsTtaVP92vITZxQiVLRX5zbYQubk3LNyI+GtCrXXGfc81hddJ6W7E6XMuyM/5Hck3DD9RqttSj56yQ1ljp/CHjw+XVlHiG/XDM+O2hYG2n2a2LGq8OKhKlGfBsp2b6Hm/bwwrznqtGnOmFnYp2MAWQlAoWr8Ns+cWYZ6GJGiCk16ioRwwYIK7fksMwK81DuwLpzD2SL/yubhz2oU9CXsH8qc8uIszhjSxCaXDBUkSpMZyeCs50nEfrLcOb5p8dxIBVDxGHeFbTU3aWZrsxnpEvR43W/gaFP3CjlKKsI7e4BhReyIrF0O6mI9PB1mikAhsy4GIVEPj89ZB2EuK6bgIikwgiXJ8fKpHCuRpWtTFTjLY1ulOMJ5LfQYMFfkDHlRgVpiq24l1RqBizWQTjk2bTjJSDod8wBAyrcveKJKLowRK/M= 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)(23010399003)(52116014)(1800799024)(366016)(376014)(5113699003)(18002099003)(22082099003)(10067099003)(261009223027099003)(56012099006)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MkpyVUdoUEtGNlNOcjNCV0Q0NlJLQTZuZUpMWFhRaGpBU3I3UEJkVWp2NHY5?= =?utf-8?B?ZFRPeUlmVHk2OWdyVlpqaDYrcXhXYlF4MWNaczlTd3IyVG5zaWVqTitJeVNJ?= =?utf-8?B?TTJYdDIyWkV6ckxkMjBwK2IrN0pPbzlFdWtGSVVOK2pDaWZwZEdoVFVIQ0pX?= =?utf-8?B?ejJSTldhb0pKdWFtK3Q4YnFwSjN5MGhsWU1FVFYrR202bW5jZ1lWR0ZnU1pt?= =?utf-8?B?bUlBZmVxbmdWanAzdTYwYkRPMW5wRkY2V09QSzB5M2lpeGx3WGVRZUpOU0tB?= =?utf-8?B?d0gyRFdZQTRIY09QNGRPbXZYNzFKOG4xMXhFUlliWktnZVpRUTdLdE5TSUdj?= =?utf-8?B?b1B3aXpJeFhRUjZ2Q2k1OGMzOGN1bHFkMnpmRlFiQnhDNGhUMzVudTdCME1D?= =?utf-8?B?ZmNLUThsbFR0anQza3ZNekJiVXVJaUtQTUVpdU9EYmExRVNMOG02am9ZNklS?= =?utf-8?B?Um9ubFQ3dXJ2RjZOa0p0QzhrNDhTSnlCQVdHbEk1di9LekxBblQ0VEhLSmxT?= =?utf-8?B?QUpOclJtSTJRZWZvdDNianp0YjdVQU5XeSsvcHdsaGhrSjBCcXRORkFtdWhj?= =?utf-8?B?cWRMT2VheWZUbmhtRUJDZWNveWZVTHJqbTdSZ0F3VUNaWFJBRGl5ZmpoTDI5?= =?utf-8?B?TU1qUGJTS3laZ3l4QjhlQzF2NWtpZWRKMkowb3lnRGFwcDNONmRibmZPTHhI?= =?utf-8?B?MW5Qb0hCNEhQSFh5cUU1T2JVclc1YksvYnBEUzFyWXM4OEUzc3Z1dmc5Risx?= =?utf-8?B?N0I4ZEc4dUJKelVPbVptSmVkSzFabzdDUXEwME5adGhuaDE5VVhOaFl3UmE0?= =?utf-8?B?V3JLUERoS0Jab3hsZzg2cXpCVEYxUDE1c1lmeE1JOUVMV21kVjdJV2dsekJy?= =?utf-8?B?ZlU4S2hyS0ZRUTBDVFdkVC8yd1laczNXYVZiaU14UFBvWlpHY3BweDkzcUxZ?= =?utf-8?B?b0p1d21LemtZRmtBTElXL1RQM3p1Z1JaU3JaUGYxVHljVk9hOGJqRUtuZmJ5?= =?utf-8?B?MTFPQVNDTVhwMVV5THBaTm85VEp3azlYNVNKSWc1VGVHME52ZG44YzJPQjVY?= =?utf-8?B?bUV2RjRodm1aZENuKzdiYy9ML2U1VElEV0Qvc2JkUUp1NTYrMGJWNUlGczFM?= =?utf-8?B?bTZwcVpsSUE5UXlSNHliaGcwYjk2bDNsOGt3cDhPWm5lM0JEdHRTTzl1cGtk?= =?utf-8?B?K29zUUE5R3htb1ErMDlpSGE3WVV3VWxhWnBrZ05MSEpJTlhpNXZQc0d5NGZ2?= =?utf-8?B?WG1INDZadXVZSDBublU2UGhyNENsd05nQVg4VjBSK1VPZkVpUzJuR1kxVllq?= =?utf-8?B?bUk4Y3B2NDdYa1RZNkFyZjN4U2RQMHE5M1VidTYvUG1GcW5TMGNqRXdja3gz?= =?utf-8?B?TWlKenBQd3JVMklSU1gxNWVyZUg1NlcrT29MYkI5VDI2bC8vZG9yeG1UUUdU?= =?utf-8?B?SFRUZm9McThJN3dDbzQreTl0QVJvUzNjeE9vMXVwVUJOMllvNTNTNGxIVU1t?= =?utf-8?B?cTlJajNESkZyT1lnVERrck1BcVN4eG1BcVMvTk1KeTVad1MySndiMUxYYjkz?= =?utf-8?B?dWJTUTVwLytHTWlyckxUTFBTZ2R4Sm1iemNYaTdmVVYyL0xycUhITVRBQytN?= =?utf-8?B?bVFkOCtuVlpJTjNPWDJ4OWhOeEozeXZ6SUV3V0d6alRON1RjcGUvTExzVnhj?= =?utf-8?B?VVFhZWJZbytCSzVWU2FSTFZ0ZWh0NHZiV2NnelE3cWNlZ2crOGRvU3dRNFUr?= =?utf-8?B?dnY3MmlTQVp0ZkN5QTJYayt6UlBCRlpFcWgvcHQ1V3BJOEtJR0U1MnpxMEhK?= =?utf-8?B?RmlpMy9mOFY2UURiZFZTb0x2N2syQ2Y2OHgyTzQ0Q3pYelhWb0tRSDJPRnFX?= =?utf-8?B?cjJUcGEzZXk3YmFXNXJrWjNOQmF2bWJ6SEFsRXRkS3JEVGxsL1ZVeWV1TjZv?= =?utf-8?B?eFkwaG5VNzh6VUM5SHhMQWFZb0xYZk5qMkgrb0kzOWdwVExyRWtSSnVhL2xK?= =?utf-8?B?TlZ5WFBuUGc4eEprUG11NUVNTzBYR2E0NElrTWQzc2VNOGhQaFRPWFh4U0dX?= =?utf-8?B?RmtuSzZXeWdrYUx5NEJjWFFYZDh4RGkzUkVjTzJFK2JBZE04ditNUGlUZElS?= =?utf-8?B?dStSdFN0OWNHTG4vRjFHc1lLbXV4SWpQa1M1amxnTDJzanpxRzRLZXNweUJO?= =?utf-8?B?ekhGcGczUmtjYStrSkphTGtZL0czUFE5T2ZBZGtxeUppeXAvM0NpVGNHQXhI?= =?utf-8?B?bEtUS3BURENzeU5BL2RpRW1Oc3dERU5jZnVEK2hDNFNkc0ptQXNxZzd2RVpD?= =?utf-8?B?azU1bjFseVRyMlFkVjl1N29LR0lFZndBNjJTN3hpY2JFOHlTWUpNeWN6b0NK?= =?utf-8?Q?gA/YFDVeLStaBebM=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 152091d2-ed19-4b2a-20b5-08df2b99cc8b X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2026 15:26:07.2497 (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: 8UTK/K14+CaSMTbfAWzojXWYCpNAPLosUgUzGA5/5YkOjKOV40Wg/suU6/FAQ0CXivrqNPU0GX/Yxmswzht5/mbMQ4DM+qBrEIDfFXxn8u8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8907 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