From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR02CU008.outbound.protection.outlook.com (mail-westeuropeazon11023133.outbound.protection.outlook.com [52.101.72.133]) by lore.virtuozzo.com (Postfix) with ESMTPS id D2B248017D for ; Tue, 3 Nov 2026 13:57:39 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZFfKWjytOlSeY/Lz/fATdV5WszpQG6Ro8iGQn8zzyBH2V3/c/0SeYHALzjYN3ZHNPaWILHTpQ9JEZFJcutLjZt7ujLgsQIbUPCPosY9jR6SQowBFccjK4uhOCeljJon2AyCQErlm6ZniYvPFWHqzJeXGlU5GGKx7sIRm+DVAebZmYpe9y/tnAfhIZF3x1rV091FsiUY2FGaBJmdhbfb45ejgJqP0WAzNHKVT09E2xgTff4pf7IY5AB3PMlqxL8ubdPvxq/Lp6v4RICcLdw0LEZWNMBUgCfW/8hKm1UfeC/Tgi6+q56hIvLgDQ1n3D+7zzxXeqrcy/XZOcS/6x+z0yg== 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=BoZImvZCWpRn6L8+dKrkxneI0+nu28KEOUIgdiu0ogA=; b=KxJA6ROTOqTfEZMseljXZmGdoSTWHW6RwBMZs5c0zIiaQ8b5gpk4SP6PfVAQ31Z6H68qA+Znxg2lLVFJzrUygBe+xRCuJxXX+1t+Or/6hlpobrpnDOpwGeHrlSqjcCmumW2HQCPnJC34XaS/7eEHe1wNTPQjq+J3ynsvusUBqp7coQyYllWfJkiGY4GgbRMyoHHF6iJulzkjM5LfRzdccUw7tm7EdSNGih1yU6zpWw0nHQWH0k0H77PB+mdw93AZpRPXqa7ZX4NBUV8I9qjwD5b2qs6fuvLoQunOdQ9qBhzgfj1hUZfd/RyBysCy1/YebSZkjdUsDp6wQ1+b1/abHQ== 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=BoZImvZCWpRn6L8+dKrkxneI0+nu28KEOUIgdiu0ogA=; b=NwsYRanHgfG1Vjn4v8D2z9Ik70pvcgxeBtnpEWN/VCI9+HBw+OO9CMo/YX4CNPL+vEIejWmnEkojq/APnCqqaEMKBbEy8gmwp8M/BARRpTjxoSJ5T+UtEs1+vejteQCiMmkvlraNx36SUyIstVEEXZnpa3JXxL5VARMnnaSLjhjivu0ocWCx7SV8XRYp/S6thzXIxA8tbf57TH4pNJ4fqwVA+KnA0TpwRNX8Il4gEj/cKkaXB4c7FecpJXbQCqg5C5zsCcAyAmlk+mc0Fi99fGMPkMdO27+oQHKsS//YoYPZSIt6GHK3y+U8ZRXoY57cYceTM6qxVXD+8HMjjkdxiw== 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 MI7PR08MB039719.eurprd08.prod.outlook.com (2603:10a6:290:106::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Tue, 3 Nov 2026 13:57:38 +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; Tue, 3 Nov 2026 13:57:37 +0000 From: Andrey Drobyshev Date: Tue, 03 Nov 2026 15:57:24 +0200 Subject: [PATCH QEMU HCI-8.1 v7 09/35] migration: Plug memory leaks after migrate_set_error() Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261103-vfio_v1-v7-9-4467fdccbbe6@virtuozzo.com> References: <20261103-vfio_v1-v7-0-4467fdccbbe6@virtuozzo.com> In-Reply-To: <20261103-vfio_v1-v7-0-4467fdccbbe6@virtuozzo.com> To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI4PEPF00000153.AUTP296.PROD.OUTLOOK.COM (2603:10a6:808:1::86f) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|MI7PR08MB039719:EE_ X-MS-Office365-Filtering-Correlation-Id: 998ec695-9e0e-4d8f-064b-08df39b2658d 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|23010399003|366016|52116014|376014|1800799024|261021123027099003|261022105027099003|261021121427099003|261009223027099003|261028144727099003|261026140227099003|38350700014|10067099003|261102123227099003|5113699003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 5gQTBk+PLiD5duoy6nbpNb+uLdKgXh8s1bS0jfSYiEgyYGuMkqbgshd2KxgMWD1UXdNkYgY3aEWmr/6wfvYuS+PC3Dhe4itp0PZLRicSRsUD+js/wreEle4v53hkLUzsn+01zz1zvfLZjaOEBxUaxlH1ujlRUNviLhfoXryfjGkIk9guLqYLdl7vK0OSjb+6wfBz9zBeZiD+cVcL+sGGkELkeKTm9U6uNbX7j6h4uL4DfH0nxo934hIv4HXh51+H1Z7EtzB+YTzg+RB+I25T5Q8FBxwoXVoV4Lh1jOxR9Q6YkLIvZFpVodLENxd1XwWBwhE56NLokhZDcimhL7YESzEa7AHEYGMuoVzSlA+1g2GMFJ3hGJwvjcQmBIFcLo2Y6Wt39z4n/iy3ACZGz0KOFYcBVyubNjAQv0ftsafX3mLpSMxQg+RkZiXvlQGgQ46UF6+VmkP1MvNqjm7FBMqoh4sQoA/ree3meoMvlN5jUtdZOGBdYVx6BKPXfeTCvuwMo1hKFhg/uPH5RfSnD5Sbh4vMQ/3OCPgeUflsXs0atBvm/KgV/CEFMRSBK0DSOBCLiHIXfPAkiRXrzkpYbOHllsrtAainFAYo1MFX/rhtb74H9OdcgpW4ePupmAZRLmeuRTpUEtGpcyZtKR5t5rm5CWCU9TbxYpAv8IVCSLhMfSU= 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)(366016)(52116014)(376014)(1800799024)(261021123027099003)(261022105027099003)(261021121427099003)(261009223027099003)(261028144727099003)(261026140227099003)(38350700014)(10067099003)(261102123227099003)(5113699003)(56012099006)(22082099003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dHU2QjJxZEZCQVZMQnN4WG1VQnpYa0k1Uzd3VEZEc2d6Z0hKTlFWUG5jZzVa?= =?utf-8?B?b0dESStaZnZiTDRtNGhSNG5jb3RLWHcxNmpZRHpVU2VhY01RTTV1cmdBOFpD?= =?utf-8?B?T0pFYVo4M1dUa1pML0JkUnVNOUhSdlEwaWtjSmtFMUIyUjZrWGRNM3ZrRlB2?= =?utf-8?B?V0tzUHMrTmFWdllBZ0ZxYThaTGp0c1RXeW40dS9WeUpPQ094ZlF5ZWQ3b2lV?= =?utf-8?B?ek9iOXNTeFN5TVhCeFNFM2RFckxxVmtHOENROEhvUDJneDVtbE02MWN6YWl2?= =?utf-8?B?dnNLMGdnSlFmcm9JcjZvL2w1dzRnRzlyMnV2MEtRbldrUWpTVUZwTGdSa3or?= =?utf-8?B?Rmx6UTRLd3dueDBmWk1UdTZSdXcwd2Y5a01KYjYzQVBWZ2czQ0VVME1aRXEy?= =?utf-8?B?Z2F6UVprcXlGbjVlUWFiaFhQR3pIU2Rtcm81TDVOaVFSVms1Zm5tWm1TOWN6?= =?utf-8?B?amlsNnljdHBUN1NSOWgxQWMwS0NtZjEzM3dPSlI2RHJEcHF0VTY1WldlRWUv?= =?utf-8?B?VzgzNkJxWFBCMitTaHZWL0dWQyt2dysvZFg1bFZuS2tVN0EwUFZIS0lrRkpw?= =?utf-8?B?N1NlQWdIeUJ3cVhVcDl5Z0VxNGE4YkZmNnpDcExOczB2Vjk5aGEzSm51RjUr?= =?utf-8?B?aGlkakVXVklZRUUxNmpyaUlpU0pTQVF1NkVYRDhxd0NVcnVSWDFncWZra0pW?= =?utf-8?B?QmorUXorMUN5SzlNUS9LdmxreU5ONVRXc3JQSk5QNzhSQysyN1l3NmJndzcw?= =?utf-8?B?bnNId041Yyt1aEV0ZGRnQllBOUJkQXlybjNOYVdCVThHdGlnU1pNS3ZjN0pU?= =?utf-8?B?a2JwajV6SGNIYU9nMHl6emF2UEFueDBqdlBzVVp5Skt2Y3dVZ21vMkdGcVV5?= =?utf-8?B?NjBzenhieVV0K1NRYVh6ZVhSUE1RcHk3dG5zdG1TSUh3d2lyS1Q4a3hZT2wr?= =?utf-8?B?VHo4N3R6UG5tZmc1dERhTkpObSs1Wkk2NzNiRUZtU2dnUGdLUEdKSWRzMmhk?= =?utf-8?B?S0VrMHpEU1ZiUk5WMUhtZWE0OS9kMlRoM0t3Vk1OMmd2Y2RFMnIyK3cvdmZV?= =?utf-8?B?dzdvL1huN1RJUnBaSUl0MVpYV0pzcHY3NlRzckJZcVhqYnNRTVNNcmZ6QnZR?= =?utf-8?B?QmpvWkwwZDNKcGNuSzZwc28yVms1ZWNJYXgyV3lLNTg0ME5DKzhrdUVlQllt?= =?utf-8?B?NHVSekl5QWpyV2ZSV2w0R0Y4Rm9zcG1xS3BKN3dUbVNxMURtTGNWYncwbU9k?= =?utf-8?B?WDJndTlYcE5BU2JvTnhtV1o4UmhJSTQ4T0hmRElPSFBhbTNLYzBHbnErNzU4?= =?utf-8?B?UHFSUHhTS0RGOEQ4TzI3UlpabUdZS1VOTmlaNHVrOEp6elVvaHFzb29lU2lq?= =?utf-8?B?cWNZRGJLZURnWVBPeERIRVh4T1NRUU4xUFQyeDFqZGlFZmhQSXRtdVgrUDYv?= =?utf-8?B?dnlvLzJxMGxUMURXSnI5aUtSN0ZGVnNJdU5wSFV2ZmJGYUpucEJoVVJPRG1I?= =?utf-8?B?eDkrbm44ZXZHYjFaZ3Y4U3diNDZMZC9oN0lPTXlBQ3pjK2xMdVV6bWQzcGdx?= =?utf-8?B?b3YzWndQOG1wQjlhd3Z0RloyWnJySzJpeVhJNi9tMWJ6QkppMUE3UVg0VTlz?= =?utf-8?B?UTJENldTOTBxczlpL3R2NkFkb1hGSUhDL050VldOK0JUeVRnK3plTGo4dVll?= =?utf-8?B?U1NCUkRmeVJ5dVBYSVRpcGx6RDA5cld5aFhwTGtRRXZIc0laNHpzenVZa3dC?= =?utf-8?B?QnRUS1JBQ093MzhMR25UMWhDd21IbmJSOFdqdHFTMVdPa1ZJSjdNNDJYT2Va?= =?utf-8?B?eU5RWkpHM2swUFV0alNDMkY4a1RSZDNJY1BjaTA4ek9TR01xdkx4L3J2anN0?= =?utf-8?B?aU5Vb0ZycURRRjhjS0VnNnVoUWtVME44YlBBYmJxc2FEdmVEd3gwYzdLM0Jk?= =?utf-8?B?YzJ1TlZ6U0Vqc2pteG0wakI0ZEJSemFDbVhyV0dIaGJXNnB2ZHdSdGFRWG1Q?= =?utf-8?B?SEdIcld0c1Juak4zSWlLWXlPK084dnVaellrS0k0ZllabW0xbXNaOE1XMmI5?= =?utf-8?B?U29acUZYcVBCOUdTVnV2QjNrbSt4V0lRZTRHazk3Qjl4MXVlVGN5aHJSeE9E?= =?utf-8?B?V3oxbFdrS21LWFBNMXN6SHBqdC8zUUpFb1o3ajNUa3MyZVNvMkh6aHVrTWNY?= =?utf-8?B?Q3orRGVvQ3hjREJ3cS81L1RpNWVhdXFBenNpR2k3ZWtGRng1V0U2VWZVeUZ0?= =?utf-8?B?Y2tXcWlodkNMWnVpdWZlUndqbW5QbiszeEpWZ0JFaVJiZU1EOUVxei9oV3FH?= =?utf-8?B?M0p6MjZQbjQ4RUtNZUdqNWY1bWtQM0FOQlVsN1hTYVlJbE5XTnYzcnd5U05t?= =?utf-8?Q?006SUV2Lr8nRKJbw=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 998ec695-9e0e-4d8f-064b-08df39b2658d X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2026 13:57:28.1622 (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: P3SwNvvV9kEu0QeeNYmJhlcuacSBAiD9F8XymDMUOM+TngCa6IfN7vGuCAZsyyMV5wRhW0/fDzXOELvgQpbZFtAv9uPqXZHbQWJilfQl1iw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MI7PR08MB039719 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 c0369b0b75e..77db262c139 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -239,11 +239,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