From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023139.outbound.protection.outlook.com [40.107.159.139]) by lore.virtuozzo.com (Postfix) with ESMTPS id 9706880F25 for ; Mon, 2 Nov 2026 10:36:29 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=us3egpnGGonDa6eSjKPX9K6uKn7l9R0dVW2qrEIp+2u0NyrptqejFtEdt4VppoaUjiR/fwjbUA8ZlOwN/fBzHOxzARZWx9AI9oBypQ8IX6f95mgK1WiCrZfXNYi9SGMCeoAuyYh4+XH4xNSx5blewYWDHQfCzn6g/0X1t9LFrJNebaahimyNWwvJwkFMM15fvX/aQJf+Dn7A9MOtLSkFXgfn7RZDbUgygXdMztLmEDHpgWmpRSiS066ZGOdePunJA+iVs7D4++YZT7gD3euzzpGpCCPQ+HnNmT7rqbUpuqUXYlTSRUJZTIo5w3UyGHmRGLdWRWxcJGmvxlxQScT11Q== 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=RMErKahweYm98sVbw9pOpEkf98sYKOXOyXEOhed0N5rNJKPwKOUxjFRIR2iDaLpcwVtNJVjQ3s4FZWzzZXo6aGnybPHNCGUMQb8jmcQT+iWM/cBvVAToo92bWLgTNNi5pCKX08jLlh/JZ0tXUWVDit59cuMgqtwIyDKVIOsmsoFK5kjjCV1Yc/jL/7981Vl+tJNesXDGdIBi80nOwsPf+GrIq8FCJhgieaZrM96LK+lnAYiAVbAKrCsD1++nyKgygmujDYZbF5w2SXn3Ts8p5f21W8w8XyEpw4McQjR/1FdEtAuF3iCY8jM9eTI6n+9Xb/5IKpNi0WwwFmSveF/Tjw== 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=iaBe5W1DlpxoU0unVgbSszQ6mTqEReyLoqDBOziPzxbcc8mBMp2lzeoYg1e7bRNYzHAbuXLQyW1QdFYm+SRbM8BC5iqXP1fgjpxwzlew6wCIf6F+YLsttwjZu5dBJdBMAx8IorpusatvVab1smxApXYkPEeDDwPOowh4dM2/NPFr8rNSb5MRURjO3rMzsk2nxw5an3YycFV65y68WUntdqq728nDa0zEpAQyYggEbX3GQHyZA4oiqTIv1PPniZZFj0wikcDZY5wA/oM1TpX8bjmuKl8lpxL5A258koijhpkP0w7WKFzyO7GCHG1FDav6ACRov7BT5PK73rGlbsFTMw== 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 DB4PR08MB8199.eurprd08.prod.outlook.com (2603:10a6:10:381::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Mon, 2 Nov 2026 10:36:25 +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; Mon, 2 Nov 2026 10:36:25 +0000 From: Andrey Drobyshev Date: Mon, 02 Nov 2026 12:36:23 +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: <20261102-vfio_v1-v6-8-9bc7cabc850d@virtuozzo.com> References: <20261102-vfio_v1-v6-0-9bc7cabc850d@virtuozzo.com> In-Reply-To: <20261102-vfio_v1-v6-0-9bc7cabc850d@virtuozzo.com> To: svt-core@virtuozzo.com Cc: Andrey Drobyshev X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIVP296CA0048.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:353::18) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|DB4PR08MB8199:EE_ X-MS-Office365-Filtering-Correlation-Id: 638110de-2473-4c46-a787-08df38cd24bf 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|1800799024|366016|23010399003|52116014|376014|38350700014|56012099006|261009223027099003|261028144727099003|261021123027099003|261021121427099003|261026140227099003|261022105027099003|10067099003|18002099003|22082099003|5113699003; X-Microsoft-Antispam-Message-Info: z70TU/L1HxgsqNSuXOJzG/3AfBx3+4Y29AJFJeHGncIBojqzKS0z14wd5QabVS1h6NpxEmn7ROSyc63EteoH+lVTlkF5w3StzOxoY6jfqPkRRcsEV2Q6mAnlcYLw/G1VHLsWCZn52Y9YWo7wucY875W5YvrfW7YcsHcLWnPAsI+VjaImvgcfG9f2ZelMVjnhkdiScq+924FpU+L7ccj1wLKQFg1b2GEkI1N8O3GzgSSUvxVVeMGMyY/agpdXJli/DB3GWb5Sfw4P58v/x5+5FP2cYYyacu1M1mpKboMsYsJ8WXAUeOpOFaOyJx4xCkn5ri9uPZEgJyh89NMDUcMwg9K2jqfhCBvZSDfCdfH+mHHOgOllOWVwu2o4HTS/dl5ibXJsUFeXQ6HGXEohUqGBa9yKZ2eaoLXyHsF0/2cAFMTD3r2uHMrmv8ki7hfWnyrtPSPPofmBxN/byGJD6APiMmfr8E/v1dk0z5vUi0GPe96s0P5uaq5u3nrJxBWGZBkfAom7KKfZX+sCFWgycO6xaCZjtYivUJ1sJ8Df8b45bvOgXfub/PpIYmtp7NWwzucMrmX3sxAUeLILyLzPWtXlTF3QbdCCveSdgU3yYxEM3jVQc/rL4BYa/G9o34vFm2JsWOaIPiJFklffRuV6xgzS0E3SOpQQ4EmxsF0q3NUYwQG2JFHlPVMFT6N5eZAYz36n 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)(1800799024)(366016)(23010399003)(52116014)(376014)(38350700014)(56012099006)(261009223027099003)(261028144727099003)(261021123027099003)(261021121427099003)(261026140227099003)(261022105027099003)(10067099003)(18002099003)(22082099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZDlFclVHMytuQWxKMktmbURiNUNOaDdycmFQSDBDTHdXV2R1Uk9VMitzbzU3?= =?utf-8?B?OTVXdXZzWUdYRUJSWUhPUEJmcnlPMWdZZzNtR3grQXBjbjVqREd6UGg4N2Ja?= =?utf-8?B?NUhuZ1RTM1pqOUdLQ3pXRWhRdW9qKzJ1THVBaVlOWnlNUzhlVXVFY1ZwY3RC?= =?utf-8?B?MDlVdHF3cEFCcUswVzcxRTZLaVBSb1ovTXd5cmcxTGt4WlNCTlRZNHNlWVpW?= =?utf-8?B?ank3ZEY5SUhvWDhBSzQxWTRnRGVVWm9xSitWb1JnNklFTkNPWDhkUWU2d0Nx?= =?utf-8?B?Z2ZVZXJNUktvN1owY2tNTEtUMXJwOFVGSkVmR3BqbXFzMlFFNVducVZOY0tB?= =?utf-8?B?WlpwNlMrL2xlYldFcUpONDBwZzVnUmZPTHJ6T3ZrbWdGTXE2VTJPZHNia0Mx?= =?utf-8?B?OEcwdDRNelJFZFBvS0FPcGU3MURWQnoxSXRmZXBTckpHY3JmMTZESmlBRzZk?= =?utf-8?B?V3pnK1BHUE5sTTNWUWJrNVRxcStyMnVNRmlrcVNYam03Q1ZYdEV6TGlhenJw?= =?utf-8?B?QUtXV0loRTBocDVXMjZVU01GMTdjOTNiSndmM0RSSkRrNGVmbTRWRFBCUisy?= =?utf-8?B?RkVjY296amxvZE1UUlZpa3Y5TlJsYWlPUnBBVXJ5REdQanc4T1V6YUVGaHZG?= =?utf-8?B?K3dUcUpwdTRwQnAyWnRyd3JXdUFIM240Q2E0UDdudlI2RVB2TjA3LzR4UUh6?= =?utf-8?B?UDBPUkRJTHhmcXpVNG9kZVNFb3BKN2N4NHRqa285eG40RUpBZXJYQTNxSXNL?= =?utf-8?B?SGdCSU1VS0gvS1NXRWxYQW11Q1lEbmo0ZXRUV3hyb1NOUWlkdFJIRURsaXhj?= =?utf-8?B?TlYzSmRRWDVPYlhDdllhOHZ0Z1RzcXZDZi93bTFWd3hkWjRmeXJHU0cweTZy?= =?utf-8?B?aEFmVUNaMzdVZjlqeFhqTnRCcWxweER2UXZTQWU4SlJNVkFrTmdMNis1VGFI?= =?utf-8?B?eDQ1alNYY2xuWWdSZnVxb0NXYlRPWFFKdXVuMmd0NlZrYjdOVzR5aG5INHpl?= =?utf-8?B?ZUROUVZzOGlUSWZCMy9qa1lNYW5yYXhSSDJUbk8zV0dua08rdjc3dCsrakxj?= =?utf-8?B?RkJWVTNTSnY5d3A4WGRUcVlxMGh6cmFpQkVGRnBTSFBqcEdULzlrcGdYZmZ0?= =?utf-8?B?Q3cxMTlmbjVlbFpjTGxlNDZDUVpBZDhlYmJ3YXpPa0FGRlp6bzNST0MvY3pU?= =?utf-8?B?b3BKcXByZy9kNEtTeUdlb1RRNDdOeW02MjlzTmdzY1l3dTFBbmlDYWs1RjAr?= =?utf-8?B?UnZNTmR2UWxFd0UzZk1aMU1nc0xsaTVSQ2x3Z1BPK3daL1ZQOFFOMzZVM3RX?= =?utf-8?B?TXZuMy9pNjBmNnpGMkdySlJsajV0V0FvNWF5UHgzeXFnQ1BaR0tBVUkwOGZG?= =?utf-8?B?RHU1NWZnSHk2ZzY1YVlFa0dVN0J3bkpsY01pNk1kZUNGd0VRV2I0d1pKdWJS?= =?utf-8?B?bHlMMkpFV3pxb1NtNXFxdlc4STJkc2psR1FsM0JkdTBkTW9jNVREYVpkektF?= =?utf-8?B?bm1heUVjV0JJUnNLV0Y3eHdaZmZRcWpXS3M1WDlxaXI5VGZVeGx5bm45OWFa?= =?utf-8?B?eE1VdndONnM3LzZKdXd5UTR6dzY2ZzlTN2ZwdG9ydDJxTUhDbFNzOVEzSHJx?= =?utf-8?B?LzlrYkNuV3ZhZVEzdDk0UmRXeHhuc1FIVi91UkRCSi9SV3ppSEp5ZzUvSTlG?= =?utf-8?B?eWx3Ung5OXZJUzNNS0ZFMDN4WExxdW8zaFhaZktkWEU3YVZDYmllTGR1Z1ZZ?= =?utf-8?B?RUZSOXBUUlRWSElVcUl2SkgwLzF0dGJ5TnBhNzdtUk9uR3dmNVVjZEcybWVO?= =?utf-8?B?MlBjK0IyK1VBNWgvWXQ1UitYYVYvWTIzT2MyV3E0WUxZSXBMb3d5SmpzQjZl?= =?utf-8?B?eU1kZzlYUlZPeEpwRFpHcm8rZndOWnQrNEYrTkQ1WXI0WlRmbURVS3F6UHph?= =?utf-8?B?VHBhQ2RIc3h5MU5Vdml5MkFqTzdSb0hyckVOUzQrUjR1ZmhQdmFGMzVPK20v?= =?utf-8?B?QnU5aDcvS2tiTlRyUW9ucjBWeC9zV0E1aWJrQlVSaU1Ib1BSMTFxTk95K0Nh?= =?utf-8?B?b1JwT04zT3BvWGRmaFVXVFlicHFXT3dCMnQ0YkF3QzNlaTYrVGloU29qTTY0?= =?utf-8?B?UGlHMHVtQUZPTUhxaFZNQ3g5eWtqUXNtMHlpVWdTeEVNV1Z2a2dNWGdGdTM1?= =?utf-8?B?N1dJSTVEZkRPVHBibFVYQXp0em1rSGFybDJLSUxxd0htNnB6TXZLU3RUa25y?= =?utf-8?B?QUlmUk4vK2RxbXZHcFVPYTl4RlFGTS9vUkZURGtNQzI5TDI4YkVvSlI0WjIy?= =?utf-8?B?bWR5OEF6N3hMeTE2MzlVRHVvMng5Y1VZTFBLU1dKOVIrWGRWSWFKV0JobDI0?= =?utf-8?Q?8t/Hga1AT1TGygTE=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 638110de-2473-4c46-a787-08df38cd24bf X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2026 10:36:24.6715 (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: krjZyN0H/SxOq5zjrFNmJngG0+0Iq1Fhq7m16Br60y4uF4nIO/ZGvlGjkJx5CR4aBTtqTvdlaCpfgcR8S3W9nXBUg+lbgC06GKrqQFdS9LI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8199 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