From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11023091.outbound.protection.outlook.com [40.107.162.91]) by lore.virtuozzo.com (Postfix) with ESMTPS id 0C517802BE for ; Fri, 4 Sep 2026 19:04:56 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Paht2+8kZQ7OAtmLCHg8H1cb1FO37Ne788JKLyPzTjgehoo6d4MRiju22V+r2IoUfkTVu4Y1IpKg3kvyPBP45qCY1HSpNpQNnQVDTs/aL+H2RcmOWbIX/8CV09DVMSiPeaKfXhurlcH2ZbFwUUjsGsfDAZROthNbSxQRJueGnsycyDNmlHKF8s2QoQ2YoqEIW85UBgbVmmipsREZAxrq+eQJmG4O1MflW6WdVNxr1GkL5wcNUtl1nX5lV2F8oDDfxDHTr6ZsOjwkNyc/x6WzcxgjS9vanJ3ZdRyV0GHKq0IotWbHKvfMDhRTkCZQbNWcrjUAJZ1LE6jFJ28ZiNMMLA== 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=Vwnf7Ohx0GGdnFO71Pb3UeLzYOAMTPackM4t3JnppAo=; b=R5ZL06boM/VkFT+TH85sgX1PuVuJomIxbW/xCoUzUNmS1wRVFC/jRA0MHNwTLy1Go6Tr1UlipIuHFJC/zzknPQ1g4hg5uEzcfuIEliBB0Jwwr3xMoMA5iK5aqRgfws/SKUdCK5ggdMIztB8REC1BsHwwWZIVEa9vEVTMJtBh6v8OlBSvqJ8HI/dmgvIrcMDHgBUbuxiFxf6fcIeWWQFiuiji37PKMz1XnRIDjbSCBWf5BPDBUcCidkITZYRlZpZcreY3DIiICIY8W+AQjtvCPPS8Q5ita8tXUFr7Y9PMtDh5eXViqPlNg05E/YjDD3RV/f+/qjV0wEY+2mxJ57bEFw== 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=Vwnf7Ohx0GGdnFO71Pb3UeLzYOAMTPackM4t3JnppAo=; b=vuBVXFCWoFyO8ktu2CeIxpO9aXn0GvMuQZjhrdvSk2Z4DfSC2ZKNU4bWMTE+Bc251h4JebXh2Qw7h4XoJpO1b00cq/pVIHb4/6Iu/175RwuRx+05RK+bkA0bkwFkaNrdA4k+SnNUDC4dJyTXyDDIOqUoR+etZvQglFbp000K2q86260UmtsBNWy1IOslMoCGB1VEeHeBTSgqDbFT32PatCAb2X3UnoFRrmef07FZ2wio6WgNYoVSXiESrghfo1Yedgin9Opow6Yu50dlfrL/s1nDIWjS7ra56Fqt4khTOzsVkZFr7V+Ls5Vaa1NW3rgX58c105ThZri7Y3/lS4q5vw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from DBBPR08MB10650.eurprd08.prod.outlook.com (2603:10a6:10:52d::7) by DB9PR08MB9827.eurprd08.prod.outlook.com (2603:10a6:10:460::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Fri, 4 Sep 2026 19:04:54 +0000 Received: from DBBPR08MB10650.eurprd08.prod.outlook.com ([fe80::1b2a:832c:d136:a37c]) by DBBPR08MB10650.eurprd08.prod.outlook.com ([fe80::1b2a:832c:d136:a37c%5]) with mapi id 15.21.0382.007; Fri, 4 Sep 2026 19:04:54 +0000 From: Andrey Drobyshev To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [QEMU HCI-8.0 PATCH v2 02/13] usb-host: don't leak hostdev FD on open failure #VSTOR-137800 Date: Fri, 4 Sep 2026 22:04:32 +0300 Message-ID: <20260904190443.795902-3-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260904190443.795902-1-andrey.drobyshev@virtuozzo.com> References: <20260904190443.795902-1-andrey.drobyshev@virtuozzo.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VI1PR07CA0215.eurprd07.prod.outlook.com (2603:10a6:802:58::18) To DBBPR08MB10650.eurprd08.prod.outlook.com (2603:10a6:10:52d::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DBBPR08MB10650:EE_|DB9PR08MB9827:EE_ X-MS-Office365-Filtering-Correlation-Id: ae43d71a-e4d0-4649-9f5e-08df0ab7678f List-Id: svt-core@virtuozzo.com X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr 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|376014|52116014|1800799024|23010399003|366016|38350700014|10067099003|22082099003|5113699003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: ApmUslj02ywlVAE809M86yHvqjsrwpVzBOrbgfrfofgrdNWaCFKFcupFJw1OIIs+inaZnsBmBsOdtRqvofeMKleGA93374Q3IesRIWvOMMx6pixJh1aqZb5Y6irSwmB6wVf0I6+ppaxBgvsGzQARFtdb1SPqNG5WS9rx+0VwBrsH+92sypAEnp9/0f5FX30SxYvNkeT+Ie4MvSLsMDcFg1RrfdkjpwkSt+0MaK4Ylm/gccyLgaPhTl268mG/FB67Bxh/oJ1ibRw9bNvfOWdrZGuJwlqSvYEu02uf/dkPmQjNC2/nO78Zsv7uutwm8eu+feKjyRCZbC+ebG/LSdoqXQfFXoU2txt0+UY2KaHCBxiojkSbD6LqjyFzk5i4HmQXuTEGpgIvu2S2UwXu3UGJMDDofEG3itRuSOifpPohCPtQyHseq7BPZNrteYOV4vjxtWAb80oSWK/IzJe/Uo3pSChEZC6QmNUxSahdJ5mQJ2ACv+FRSxv+oJKGf5iXDJJdhDpRAyOKnhs8p66OF1OczvyKXummD3OOjJZkyFi1yml+x6uu2VV0fqpkoZeZF6NSa4uuvYtxRJE6z9KHZlb9hfzpyh4OTWi0wjUDwBN0MWuT13JaOEkk24qMpFNJnSiq+t4I9bzzyqyV8giRvTC4vBveJvF9GHtbLm0l/8yRZrhSvDnv39g0wbIBBEkc8g4Jzos2gwy5SEvhrBsIPTPL6IKnSyDwLyWqgfzmSpVjIbY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBBPR08MB10650.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(1800799024)(23010399003)(366016)(38350700014)(10067099003)(22082099003)(5113699003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bR8qrX5dPrXUiX1jDzUZ99f5YZAmyCGHzkV5a/SkKA+92r8LP3nAENJDSi3m?= =?us-ascii?Q?V1e9OLbBzlL6i+0O7DuLQcF9VUZQqbUwDiVyRCDLHNQ+8uUcDbwT3xbtTTMa?= =?us-ascii?Q?MolszCJW6HiYNOUhqcQ/aNrpebfw4wRZ7owrdQu1+0mKkFNW5AV+VDCRPGoe?= =?us-ascii?Q?yv7jyz7Eizo6+G9IJ+A152BQNOloD48Gyyx0Zk6Af64hh1kX5ocYCcbzxYNh?= =?us-ascii?Q?yC1Tjd3bRkCDxdlNPlEC362XKDbIvonBeeWLalD3mwTQRteCuxTNLqijqmui?= =?us-ascii?Q?wLNGtekReIlSN/Eg7qFcAutfmjg/OU4m8LwIepMMYCOStk5UrZwU6ITdoxnA?= =?us-ascii?Q?/ZKLJ8PqbI+73468gqBtS0GtF9Pzsqorn7j3NT9cBChUKs8MrG00XXrzVMgJ?= =?us-ascii?Q?wjW8KdaALMosEJbt1FV18NN8Y6vFfHxdHM/rDbJMLctfLSY6po9KtgfoWA+e?= =?us-ascii?Q?j9hQ9mUlx8c31yv6PFoRgo4ybqxUCe0smV25CRrHRbgK23HAxIsgGLcWu/KP?= =?us-ascii?Q?v1HwaLvAUEkVxmBXvoskX2SPyPF3jBq5XuiS1048WZclAG3Lr+nMWIvvasad?= =?us-ascii?Q?RGXxWmDboX7kLTkJSCiKyBtxU98IHdEMwERtPJwwneqGH0OXk6spPBoKNFnZ?= =?us-ascii?Q?xKyo9QeiIqR9n6LLG105kPpQUAeMD8u54z5O6gNT0E9L+hnibCuDgOSLcFdE?= =?us-ascii?Q?+/LUTQSq4x1GSBte4VCi0FsQ3kfJnZGCsNkiMYd7az5Y9R+iY0h7Snf2BYcP?= =?us-ascii?Q?4nYIfOmZn1wlFg5y9eKHwB7W0XTuSmYRP6Ui3ZRn+ozFERZ3kAIoDNlPAf3v?= =?us-ascii?Q?2O7vCTRj5pueM354USBoDcSodNQFxXhS8IzwGH3CUmWk9tq71mXNepUvADKN?= =?us-ascii?Q?msi5h1LD2tFM34dEdDeuoByEqxC22uov/8J9795xtaU/F1loQyz7s6hpYHFn?= =?us-ascii?Q?DzY68dJY1THCguwoYR38e3QxJpNK2oEOXTIoUfWokwqz/+0fpNTjqFz/7K4f?= =?us-ascii?Q?A893YT8TsbHK9cBrejH2evb7NPU4JEjFlN/0M/cZMVSOLrKYpFajvX8OL3rA?= =?us-ascii?Q?MmaJog/nEgUO8rXffeyuShBV4mBFu9wRuG0yKtwMK/iGupB9Z5EDdHv/iA/x?= =?us-ascii?Q?upELEvEZN125IdKbEtyakaBARzeUO39C+Gz3PcY8ru6HLZNWk3iphCT7AXbJ?= =?us-ascii?Q?mJieEdwBSzigl0E+7QrvxWgrTXMvyB+2lYvsHYdaDbDzmUZtFtPRu8UEhlV1?= =?us-ascii?Q?6GANMv/4u97py72Tn1y+TGIA32DCkeo8NB5C7JBZJcc8H/8MEh08tAOS7pN7?= =?us-ascii?Q?qwK2c0k5isDOoy9Q4e/IUSQCsxMocdn7Sf/ge2VtptW29j9hkuhKpCLZu0GC?= =?us-ascii?Q?uAE9V26OttJDrophkEFDTHotbOdNEGmBjs1N+7Uhs2cquPYPH6npBqm51Lyi?= =?us-ascii?Q?6PG8pQKqSGWeM1mlITtePgVDR33El8VHnyqtGBgnZeayOore6TQUikmy90X2?= =?us-ascii?Q?oYwRO/2rVYhqaeVY/1JjbFWlwLaOgVem+8Jg+zYLh3f51Z5NFiZ+S/gWn9lZ?= =?us-ascii?Q?W7Y0yblqTlmBeuPAdZfuRgbo1/1U+pTY905kZgmqTVDdh2RRGZ+tYMenb413?= =?us-ascii?Q?ApR4RT29n7Z7CEPOuc11iYLQg0mUwpffNMuZnIi/4lt+EA8AX5IHoCfdpfpS?= =?us-ascii?Q?y8OXp10tWjbxN8CP8hUXYLZZmniEXmgZugMxXzgLnsSHj+d0DteOIU5B8Ayw?= =?us-ascii?Q?D1Zm8bd0TCMYr66hr2/L1D253oInWxw=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae43d71a-e4d0-4649-9f5e-08df0ab7678f X-MS-Exchange-CrossTenant-AuthSource: DBBPR08MB10650.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2026 19:04:54.4176 (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: dVFeU+vv5ocrrv7JSQTI7dtp9E81y66rok+w/vzubBdvUJXkVo7AnakHZWumpR0qTpxr2oPbBj0BI8SVscJyzNxXo5wLFITchY98jilWueQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9827 The FD passed into usb_host_open() for a wrapped device is only stored in s->hostfd after libusb_wrap_sys_device() succeeds, and the failure path doesn't close it. if wrapping fails, or a later step of the open sequence fails (e.g. usb_device_attach), the FD is leaked, as usb_host_close() only runs for fully opened devices, and the realize error path doesn't clean it up either. Store the FD in s->hostfd before wrapping and close it on the failure path. Signed-off-by: Andrey Drobyshev --- hw/usb/host-libusb.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c index b74670ae256..a8e6f142ec0 100644 --- a/hw/usb/host-libusb.c +++ b/hw/usb/host-libusb.c @@ -974,11 +974,11 @@ static int usb_host_open(USBHostDevice *s, libusb_device *dev, int hostfd) #if LIBUSB_API_VERSION >= 0x01000107 && !defined(CONFIG_WIN32) trace_usb_host_open_hostfd(hostfd); + s->hostfd = hostfd; rc = libusb_wrap_sys_device(ctx, hostfd, &s->dh); if (rc != 0) { goto fail; } - s->hostfd = hostfd; dev = libusb_get_device(s->dh); bus_num = libusb_get_bus_number(dev); addr = libusb_get_device_address(dev); @@ -1066,6 +1066,10 @@ fail: s->dh = NULL; s->dev = NULL; } + if (s->hostfd != -1) { + close(s->hostfd); + s->hostfd = -1; + } return -1; } -- 2.47.1