From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023126.outbound.protection.outlook.com [40.107.159.126]) by lore.virtuozzo.com (Postfix) with ESMTPS id 273598122C for ; Tue, 3 Nov 2026 13:57:40 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dZDhvOBtlmgr+xdeLh2/XoxmoI/xm9Hra3sOJ24hCt4y1gHl9rMvqEubBs2Juxg9IPqI6tloqO609m/WKuI9EgLhz0Xk+mcoj6AR2kaj0WgzRbicvp9ivH8cCfxdY69EpqamiAnWiUlF0wpzHjeEtZH2gpUF0Tpod88E596n/cb9EFiLQHmK70FbE0Qth4g/WVbV5250pz041KFFBXMZ/weKuHCv67DMoFG5T862Ubr8YCa5uSt5YDiQNgalIMR5x0R1/YakcWqieXQG5e7mkCdbrNMbLuopPxNzhCc7KKvrd64eefh8FeyCogSbvSsiFqx39d0QlLVACLNN5j4xkg== 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=tx9qRQYdAxK4VxbtIni9btaU3tER3amSRecioHbt6Bk=; b=cVE5QfWafMNUdJhlMBPMjz1qw/6EQgdr6bwvvhH4fk4nq8iKXQhnEErA8D7tI4tRfBA9botBlAaZu4rqEk4vriF59dsK9L3JMRJylE/Pis/P4ag1G87zTvJnxE8iW4JtU4hP1WcTMbb3r7k3nv2taymPcv2bN0iZE11h0fJHGraIb+o7vLaB9IU9key1mxYfeAFGvJ5XdPVYf1R2XfvTQd/QAXvxla92GzgtdRlEegLmiuPGMQC17+yI8TlCE6jE4gm/wUNLuD5T9jgp1iWiXNW3UEuulzJ3tzc6v+dPZcPPij2whJH5XrBA+iPzixNKw49txUkn0EaHpDzZHe/4CQ== 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=tx9qRQYdAxK4VxbtIni9btaU3tER3amSRecioHbt6Bk=; b=zINq39TPLkcBnwXBTNWRdS98SvIbeXnyJ5NqikqpDEO1x5I9dxTbHH3NNz77U9zQedZyj3nYsaNtxaR1HDbQeWwROU/dj0JRQhcSDhiOPeZmSg2FEphEaxV/48QV2nuwOg2ku2frFCdkOI00+dsOw5Sx/kK1xc+VkSV52W44VHj/fT43AKJ9dCKH6rcf8I9SewA+aEOmhCUbPdAjO/3ilJUoDs03LuBpLwLd3cN2PZnHYQyG8X3JyvWYltPRk6YEETwNoGTaTouXu9UUjrzxQyOmooMVRvwCwDDf8W+9VMWR40QPOQoYRbjSuPNyeriZVkhEqLHPBjO/Z1685qOP9Q== 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 GV2PR08MB524981.eurprd08.prod.outlook.com (2603:10a6:150:38a::8) 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:35 +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:34 +0000 From: Andrey Drobyshev Date: Tue, 03 Nov 2026 15:57:22 +0200 Subject: [PATCH QEMU HCI-8.1 v7 07/35] migration/cpr-exec: don't leak the dup'd memfd if g_setenv() fails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20261103-vfio_v1-v7-7-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_|GV2PR08MB524981:EE_ X-MS-Office365-Filtering-Correlation-Id: e2ffcd2d-fb75-4575-6adb-08df39b26522 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|52116014|23010399003|1800799024|376014|366016|38350700014|261021121427099003|56012099006|261028144727099003|261026140227099003|261022105027099003|261022075727099003|10067099003|18002099003|22082099003|261102123227099003|5113699003; X-Microsoft-Antispam-Message-Info: 1qKJAop7hi4U/TXMa5EVD8jJxagRW5AQkUHwWwuXwpgj3a1alax4en0nhIHCXB5oo2apjsFZZ+zKmp24NQs0Z06Zzonq0RZHbBhkH44iSx9k8WAPIqe8b0hIbe3zAXxkgPrI7s/b2fl4LkUzHQWDwuAzyLgZ82E/dZPvRJhZqHuJDrLQElMKfAA3RlStdh5GdIOIEfkY5PXeUXujMhThz+2MT9ue0Vzi4uCUQJKTF/hs1Mz4F1WSSJjp21TceEwTQFU5YRQs7ALi2fMYkbX5BzauUpDppEVIlyquhHsF3nsT0KS2132L1ayOZxpxgRK0p3C6w1OOfmH7IiLlk2iNOGMz7lELLd949YhuZorCiLY4uc83mJQmcD6VMBPCnRJeXM4hmR7QHFzIYUiYdSyRb8SkSZTo5qgLXRAJycsmKH+XaumCGR02vjaZvWum+lxSMolzLUUajEvJP1rTd/3nxe5qk4noYkKr0BwNlvNZ/A53fG3ikoBSLywRar4bsQScrxPULGXWuCzkuG71qQs/rnVjJ0TXHoz27w99CPJKRhWIBEExASDawWrUpmcCHM9sLgZ3Gvj0MjtBfugPRsK6s2f4BEohhmAkEr8sBH85mDI9+p14U0gga00E5QMAcxM+Xc4c2mhONW9wQwMjgcGWKlZ8iUgB153z0KG0ihIuDBKDtjXIgCk4LPcrqhEKGKdnlEv7o6WOykiazBXAzCFmZ/5onGbTtVOHEhyMHz+ED0I= 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)(23010399003)(1800799024)(376014)(366016)(38350700014)(261021121427099003)(56012099006)(261028144727099003)(261026140227099003)(261022105027099003)(261022075727099003)(10067099003)(18002099003)(22082099003)(261102123227099003)(5113699003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YndVVWxuNXE2V0l2TUtaU2JPZnBrSEo0TFd3TjJZVGhPdkRlR0lraFFHNVJQ?= =?utf-8?B?dEpFckZvQzdEeFd5NXFFWjByV2VZYU5FUkt6c2ZnRjhwSEpLclk0WUJ3L3Av?= =?utf-8?B?YVduZk8xT29idEtUZW8vdlZVa2U4VDcvbXZHMHA1QTBJQ3VoNmdyWURTN0tE?= =?utf-8?B?NUY4QThGTWRUQWQ4ZFQza1hxOGl0ZFlvU1BQSWRGOFNKQ1F2WjVYTEZnTGU3?= =?utf-8?B?aFRjVFdIenVyVlZDcE5IQlcvMVh0QVJuak9rTGFDY3NyS09PNnRXQjdqcm9I?= =?utf-8?B?WGNqZWRpakZrbHR3KzgyVFkzeEljc0Z5TS93N05KM3pJaFcwcUVpNmZUT3BS?= =?utf-8?B?Y3RPM01DUmRFck1rdlBBTHRHRElrZnpadnlDR0taUTJJWVZLZ2JqUGorOG01?= =?utf-8?B?UnhJVElkL3UwUXh0bjU2MWdsWkc3OEJzZTdLdjhBWGJibEY2ZHA3aENNYUpT?= =?utf-8?B?dE4vWGdGQ1lOTnF6Ty9wQTJDTjFKclg2endYOG9vZ3RsdUlJZmt4enMwWlhx?= =?utf-8?B?OVEyaU1UY1laVlQwRUluM2k0NUtZbTVpdEtTTWZNWFRPelZra05IelM3ZlBk?= =?utf-8?B?Uko2S0daTmpPbHNQcUZGV01Iend4bmliblltS1paMnEzenhxVlo5cElkL2NQ?= =?utf-8?B?VXpMVUNqNHdCRTdFY3djekU3aERkWXNJbkNRRkFrUHlmdk80UHNESWl3bGV6?= =?utf-8?B?QXpwVWtIU2srWnBoRmErVWdWTmg4bHRrM0ZlSWJqVnR1a3M4RWdScGE4elMr?= =?utf-8?B?YXArbXgrY3dtQWphT0dCV0s1WHQvUUFXRTZEUmMzRXN3TXhUdWUrWmgzSm1l?= =?utf-8?B?Y2JRckxCRXdxUzJ2YkF4TnlGL2Q1VTVTcy9aeDJkcDBaL2pTVXNJTEJEVmE2?= =?utf-8?B?L2lXbXhsdjAyL0x0UUJoL0R2T2h3UkF2ZzcyMFNSMHhmM0ZzUzdEMm5xWGV1?= =?utf-8?B?VXRLQWZkVzltbW9RU09uVldRQURudGwxSkN3MklRMk0zYSt2QXM4ZUJuMGdS?= =?utf-8?B?cVVjcE9OalpidTY0REpjRGRwTkZEOENnbE01RERFSGZtZE5zU1NuWkNsRlBP?= =?utf-8?B?UGljUmUxdWduNDZPdzRtN0pOVE1LalMrVWJTNkVYZlM5c0R6aDRYcXdZRnlL?= =?utf-8?B?akcxa1pMMnZnMUlneG9vUTRoeFJCcGFCOW80b2Y3dTZJOGh3R2xrRmFnRTFZ?= =?utf-8?B?WFFYMDVJdDJlMW9IT21pek56TTNOOXo2QUFIL1cxdEQzdjZzbkZXVUhLemsw?= =?utf-8?B?ak00QkNoUy9HUE1ZeGE4a2RWRk9LYk5FQzdFdG44enJYcWpRVWVyVWZSTUg1?= =?utf-8?B?MVBFVlQ5eEppaDBWLzF0eDhkTS8vSWNCMUNWVG01blRNQmtUL1o2THpkZ1RH?= =?utf-8?B?ai9KZzM1VkE4bkFyVEwzUmcrdzI4NTF5Z1g4RzFWNHh0VlpNSzRERDBRcmU5?= =?utf-8?B?VERzUjB5R1NEbmZ4Q3NMUFZ1UEk4RDB3clVSaUVRMkQ1MUppSEZmRzRjRStp?= =?utf-8?B?ckdjYk9Ya0t2cFU3Y09sTXRzU2lNNlJadlFVYUI1MC8wZnFranJ0YXQ0MHp5?= =?utf-8?B?MVRKYXpyb1hWTnc0aEFqYkVlMXJlMlhFSm8ySGJzdlRIeTlUbzIvaDdxYVFj?= =?utf-8?B?TDkxenMxUGx5Wk5lbTlFWVBpZWFoWUpldzY2aVQ2OG9KbUk1RG5aUUh3MElo?= =?utf-8?B?dE1BK2cvQktjMkRrODJiSks2MTJoTUNWU1lSL2hrUXA0dmhtTXpoQ1p6aGpr?= =?utf-8?B?NlZYUUczN3JnN2Y4YkNPV21lZHRCVHpIL2dsdmt5WTdwYk9rR3JReUREWHk2?= =?utf-8?B?My9kbVljSjJ2TExqeEVrWk1nNmdGbk1SWXFpbmlvbncvVDYxeUU0Rzd3ckVI?= =?utf-8?B?cjg5U1hqRitpWXZuYzhQbDNORlFuUWtlSWZkMUZGKzRybnVkTElQeERsYjVh?= =?utf-8?B?NUZrQXowajlGaTBkYnpQWFZVVmNSUmRRd05UbkhkRG5BVWhxcXViRmc2U01R?= =?utf-8?B?eFZPcUlOTFVWZDk3NEVoYzRZQlFhSkROUURla3EweFBUL09naFV0bUlaeGRG?= =?utf-8?B?MFJNeTBPUnZoYkVZYTBRTHJWWEJRSjcwcXFTYlk3TE5qam9VS2lEVStGRWsx?= =?utf-8?B?YTl6K05oSVhQRlBkV3F3aVAvc2tlemgvTlFGS2pLUWJVbi9BK0pmVThyS2VV?= =?utf-8?B?Zk5icHJDa2VPM3VvTEM3dE9vc09JTGFYdldTR1MwOFVrM0JBcVJKWnpsNVQz?= =?utf-8?B?VmpxU1dmd0FlZElGaXVRc0lkOEpTbkt4cjlWN1BaNWdVQUQvMVlBcGdMKzJi?= =?utf-8?B?aG1IMXZuOVZKQVFKTFNnKzV6UkpTcmNuUVRVSDhLaUxBdWNuNHlXUER0UTZm?= =?utf-8?Q?Ist2QNzmKqlci7WU=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2ffcd2d-fb75-4575-6adb-08df39b26522 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:27.4774 (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: KF0wPe62t0LJhSPKzINbRWkXnRw+Ia35GfZpyngGdWqcksD7ct7IWWM0Gs4bb0xwfVGu5vO6T1WQPsvMEj0FC5OIQYyZeYN9CC1nHEFIRzc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB524981 cpr_exec_persist_state() dups the CPR state memfd for the exec and records it in the environment. If g_setenv() fails the dup isn't closed, and the leak is inherited across exec. The dup() result isn't checked either. Close the dup on that path and fail on a failed dup(). Fixes: a3eae205c60 ("migration: cpr-exec mode") Signed-off-by: Andrey Drobyshev --- migration/cpr-exec.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c index b52f44b54ac..c0369b0b75e 100644 --- a/migration/cpr-exec.c +++ b/migration/cpr-exec.c @@ -51,11 +51,17 @@ bool cpr_exec_persist_state(QEMUFile *f, Error **errp) int mfd = dup(fioc->fd); char val[16]; + if (mfd < 0) { + error_setg_errno(errp, errno, "dup of CPR state fd failed"); + return false; + } + /* Remember mfd in environment for post-exec load */ qemu_clear_cloexec(mfd); snprintf(val, sizeof(val), "%d", mfd); if (!g_setenv(CPR_EXEC_STATE_NAME, val, 1)) { error_setg(errp, "Setting env %s = %s failed", CPR_EXEC_STATE_NAME, val); + close(mfd); return false; } -- 2.47.1