From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <010701a169b4c326-c1e87809-96e6-43b5-b773-a954bf7bda16-000000@eu-central-1.amazonses.com> Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020128.outbound.protection.outlook.com [52.101.69.128]) by lore.virtuozzo.com (Postfix) with ESMTPS id 4E44C8017D for ; Fri, 23 Oct 2026 17:00:21 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DAHg8jPTQenDhcMH3kwzIF9CO8+Jv561tiq6ny9Otbjm4vESSkURgDco7eINTrG61VIdiT8jOQ8AM2hkyVYeyb/HfwJMs31Xe3hWTZNFjeJYvL8OD1zoxO1mH6rxL8DhD6E7ziIb+reAmP1J7O9XGGleMVzf6yi3foPXg4VQp+GfE6YZuOJ3phIBtSDvPpwGPZc+vsbOdRnBAH2xqEcYGih5kvda5ImdwxcY7+okUSRLExXUPnK3nO2u3FFt3xIgTFBEzyLoV8w+t0bWtfLOtBx81Z7Gm6Y7VN7BOrIQS16vKGjmOQmFFUH4zMVy4J3rvnza8/yskokby/yNgfvVDA== 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=A66zCYYUH16GJjRkksM1OrjqDyQtbbGxL7TRh0Qzk/o=; b=WAbcs9rvJJiUKlxeeOlv/s7gW1Ku+nGqyTA95c6msppfEMPXR5uiA8MzZegrWD38JNQjvpPVPCkVHHJBm9iblkfZxg0c/mtJvFfBjH6+PXV031GAKjuS8xkVkqlm8pgJ65ecguqpt1cJx37tj0zRohe3nSzr2SgT5L0sX0fURnA2pnVYqcDOl2RCgfW2zxuEa+YTA6tEZuVTTrdFpRDpr337Y320dJAqzXDmynHd7LZNTHg3S/l3+fHFDXxsM3KwMTVMPziU+V8efpwd0AucYQUb/sT4+RglqFShEJWK2+o83IwroCeIszY1c861u9fClbk7LIEn5IJoP9EDhft1ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 69.169.224.6) smtp.rcpttodomain=virtuozzo.com smtp.mailfrom=eu-central-1.amazonses.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=sashiko.virtuozzo.com; dkim=pass (signature was verified) header.d=sashiko.virtuozzo.com; dkim=pass (signature was verified) header.d=amazonses.com; arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.onmicrosoft.com; s=selector2-virtuozzo-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A66zCYYUH16GJjRkksM1OrjqDyQtbbGxL7TRh0Qzk/o=; b=BamAbAC7Fg1V/gaNyM1UIbXtItdeASL8M0dXZStPnz5lHfX0N/Pz5XyyNUaZfdkR9me/6HT+SFzHzfdhOErdc8TY0yqyJS4C1yNXSx8gaEQyB89PO1xcYB8l9fi33+mLjsEMTlkIF1PS8wHfpNhEcqPwulwA9kDT7J+9oIwMe+s= Received: from PR1P264CA0190.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34d::19) by AS8PR08MB6293.eurprd08.prod.outlook.com (2603:10a6:20b:23e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.18; Fri, 23 Oct 2026 17:00:17 +0000 Received: from MI3PEPF00008551.eurprd05.prod.outlook.com (2603:10a6:102:34d:cafe::88) by PR1P264CA0190.outlook.office365.com (2603:10a6:102:34d::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.546.19 via Frontend Transport; Fri, 23 Oct 2026 17:00:17 +0000 Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 69.169.224.6) smtp.mailfrom=eu-central-1.amazonses.com; dkim=pass (signature was verified) header.d=sashiko.virtuozzo.com;dkim=pass (signature was verified) header.d=amazonses.com;dmarc=pass action=none header.from=sashiko.virtuozzo.com; Received-SPF: Pass (protection.outlook.com: domain of eu-central-1.amazonses.com designates 69.169.224.6 as permitted sender) receiver=protection.outlook.com; client-ip=69.169.224.6; helo=b224-6.smtp-out.eu-central-1.amazonses.com; pr=C Received: from b224-6.smtp-out.eu-central-1.amazonses.com (69.169.224.6) by MI3PEPF00008551.mail.protection.outlook.com (10.167.240.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.4 via Frontend Transport; Fri, 23 Oct 2026 17:00:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=23yjbh4k34hwzfubhuiim7m4inbd3ick; d=sashiko.virtuozzo.com; t=1792774816; h=Message-ID:From:Subject:To:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date; bh=YJoQ/MTXXIEiPOImfZap7xLDrKF8f7fPUnW0SLrvU0s=; b=mL6H+n3lzi9IgRvTENkj/0LBuoAWNvNu/BQXhVy76JCCyIoNOs1nxmEibWQBQscI 8sVbcsqRF5CGEBPzwtXwcryNjXBpy32ncCRzy66XQ4JBuZTHwUYGkcSSsKtEjiH2UY5 SVwSz2rXbiUV0TfujfBJvglXcCIJYP37RThgNEW8biblgDKziFF+6A0prncT6p8DQOI QSql7PJBEHzqqhZ/w/CiWQ+2Ttc5CFJ8apcrrm8vGLE5hoPmV47uKEHqXjWzyZoX9YN tV520SepTsGIvL1TjW85/DbzSJot9N91Mvc74nE0QgSNllc4FxmzS9MON3DYEyfRwgj nhvjgVN+iQ== DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=qftdzk2dqsatjnlrq4r5brjbihpfcrsh; d=amazonses.com; t=1792774816; h=Message-ID:From:Subject:To:In-Reply-To:References:Content-Type:Content-Transfer-Encoding:Date:Feedback-ID; bh=YJoQ/MTXXIEiPOImfZap7xLDrKF8f7fPUnW0SLrvU0s=; b=UBAIaTeIh/fJ7cVfms2OGcRWAAiZXaSeqyS1DKR1Dejjzl5tSRDtpjkGlcFBc4jz 4QZBvY8Op3vrJTLWqCWdKjk10Ga9fTdpSeITy4J9UUrtsNl5UvpCPJ9m1rv09Ki+I82 Z053kFbr3UD3NzI31zWdq8EsbLXO8S85t+ru+unU= Message-ID: <010701a169b4c326-c1e87809-96e6-43b5-b773-a954bf7bda16-000000@eu-central-1.amazonses.com> From: no-reply@sashiko.virtuozzo.com Subject: Re: [PATCH QEMU HCI-8.1 v5 03/36] vfio/region: create BAR dma-bufs with O_CLOEXEC To: Andrey Drobyshev , svt-core@virtuozzo.com In-Reply-To: <20261023-vfio_v1-v5-3-ba0bf3c6d122@virtuozzo.com> References: <20261023-vfio_v1-v5-0-ba0bf3c6d122@virtuozzo.com> <20261023-vfio_v1-v5-3-ba0bf3c6d122@virtuozzo.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Date: Fri, 23 Oct 2026 17:00:16 +0000 Feedback-ID: ::1.eu-central-1.2wRQJBpg9g1fGRYexx3dUuYGS25Bux+2TEOx72/m6U4=:AmazonSES X-SES-Outgoing: 2026.10.23-69.169.224.6 X-EOPAttributedMessage: 0 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MI3PEPF00008551:EE_|AS8PR08MB6293:EE_ MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 2dc14097-638a-4922-1509-08df31271d11 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-AtpMessageProperties: SA 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|32142699015|61400799027|48200799018|9140799003|376014|261022105027099003|261022075727099003|5063699009|56012099006|4143699003|261009223027099003|261021121427099003|261021123027099003|10067099003|22082099003|18002099003|55112099003|16102099003|5113699003|4113699003|13003099007|261022113327099003; X-Microsoft-Antispam-Message-Info: GB67x5uRSqKh+i3pwzRGSYNg3tWmIQq/9esCCrkBtkOtWuAs0shfKaO5i4xRcDf+s4PJDM1qCPEWiP8gU5t1wfi2qu/CRoM1qypnWXmAy/VJsA8fP6xOvzrHCqHw4LqeYv/Og+zY5IoVdO6tMMCQMFuMCdi7ZAr9GuIDLqcEA/oWIwLokQHjmavUOF86kM4MzrVTqKTl8rsLpnNBd1BXkTG+2HZzb99CCb24uuNQGceyDyXt220AEatM73lK2XHqr4+4CZ9MonfkeUcSfgqG1dRTSM2QToS0SBTPdBVcecXJiV5R69ARDAM0oqorZvZ0d2ANyY9dthXeyhEMCnMyQa3Qbzkc+VWmqd8Tl9Nk6fUsiVrfchDLIiClV5eEJ+yuCHPctIZveiC83Oa7XLO50pUSI0JaxTAamwbWwFwV8F/C8ZEELTs14l+L3RyrPc9+HVfH7EjfO7oXFgwB6pOpSEWTtg38SmZWiE1skgFmDe+/qSC564XdnxYTFgoo3niZK5Xbr2vtlqMYkXVkxMDDGzznsrZ6fyHmjf1hPkLB43J8Hi/HQeyBQ9TJp4PBHUEegbPpdJCTrHU5BCAlFywB2ygFZ6eBQnJ7QOWLJReTz1ltKbc9SrvfcuOLyaShQHfvEKbbBO4ble/X0AEm2RIVxISjYGNnpb3r7eIDTJWp2gEG3xkFrJPvsrkymH2ADSJcUb6GWbD0ZuX/17ppkZ7a/RpF1Ao5JJkT3ezVbjYWuVO9iF+ED90M+kNM893flsUJ2l+EVXRtUe3uybDFrd9B2hCoJVUI84nNbb/CzXf1G0URak1k6o1/lha7y7BowiOb4tzD6EUfUp2kRK1iFZKgvVCpY99KLETEFBBr4T17fJM= X-Forefront-Antispam-Report: CIP:69.169.224.6;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:b224-6.smtp-out.eu-central-1.amazonses.com;PTR:b224-6.smtp-out.eu-central-1.amazonses.com;CAT:NONE;SFS:(13230040)(32142699015)(61400799027)(48200799018)(9140799003)(376014)(261022105027099003)(261022075727099003)(5063699009)(56012099006)(4143699003)(261009223027099003)(261021121427099003)(261021123027099003)(10067099003)(22082099003)(18002099003)(55112099003)(16102099003)(5113699003)(4113699003)(13003099007)(261022113327099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Q7g6qmcnerG7LtoiUIQLVGjCHKA8BKzxazF2nTJOoK3tH/cdCPa6bqIctkqbkF7OGfD4pfTzu1cUSOEEd62Pa3QZPKB5L1oMQ5Z4Y8yPiyR2tb4QPPbtpKKDaxX5YSObDHdFVll8BYmtQV/f7yNsuH1bboMTgpaR0WuShstxf9ETvdczT6IUeiqf7/nGcPXvY3zw8NCGKFZQk8TUXQdcgOgkktfdx4XgILdcN8Euew5zInrW2cumvLlB/juJoTW5lwCo/G+JnnKbcCmIhB1lOQqkaokIkErVxjYoajvwawUu9mAEBkRk5qROz0NbvlwYy1b5aDxuo98Kc8nFYirEXsbpji7mJBBieh4opx3h4VwMJdJ8RGjRLgWSMYtKLSnHG0UwteWXKwneS2GhayAlnWvh/3vwHjRu9EhuUjH7oJxzxa9zt+Ib4GmVKj5bC5W5 X-ExternalRecipientOutboundConnectors: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2026 17:00:17.0306 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2dc14097-638a-4922-1509-08df31271d11 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008551.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6293 Thank you for your contribution! Sashiko AI review found 1 potential issue(= s) to consider: - [Medium] vfio: BAR dma-buf fd stored in RAMBlock->fd is never closed -- commit 73b2e092ad0c285255215af88f06299b94a431bd Author: Andrey Drobyshev vfio/region: create BAR dma-bufs with O_CLOEXEC This patch adds O_CLOEXEC to the open_flags passed when vfio_region_create_dma_buf() requests a dma-buf fd for a BAR region. The aim is to stop those fds from leaking into exec'ed programs, for example with cpr-exec. > diff --git a/hw/vfio/region.c b/hw/vfio/region.c > index 1deaef12fd0b8..b0332f27fcd79 100644 > --- a/hw/vfio/region.c > +++ b/hw/vfio/region.c [ ... ] > @@ -258,7 +258,7 @@ static bool vfio_region_create_dma_buf(VFIORegion *re= gion, Error **errp) > dma_buf =3D (void *)feature->data; > *dma_buf =3D (struct vfio_device_feature_dma_buf) { > .region_index =3D region->nr, > - .open_flags =3D O_RDWR, > + .open_flags =3D O_RDWR | O_CLOEXEC, > .nr_ranges =3D region->nr_mmaps, > }; [Severity: Medium] The commit message says "With cpr-exec, every update leaks one fd per mmapped BAR". Does this change fix the leak completely? It looks like the dma-buf fd is still never closed inside the running process. vfio_region_create_dma_buf() stores the single returned fd in every sub-region RAMBlock: ram_block->fd =3D ret; ram_block->fd_offset =3D region->mmaps[i].offset; These RAMBlocks come from memory_region_init_ram_device_ptr() via qemu_ram_alloc_from_ptr(), so they have RAM_PREALLOC set. In reclaim_ramblock() that case takes the empty branch, so close(block->fd) is never reached: system/physmem.c:reclaim_ramblock() { if (block->flags & RAM_PREALLOC) { ; } else if (xen_enabled()) { ... } else if (block->fd >=3D 0) { qemu_ram_munmap(block->fd, block->host, block->max_length); close(block->fd); ... } The region teardown paths do not close it either. vfio_subregion_unmap(), vfio_region_exit() and vfio_region_finalize() only munmap() the BAR: hw/vfio/region.c:vfio_region_finalize() { ... if (region->mmaps[i].mmap) { munmap(region->mmaps[i].mmap, region->mmaps[i].size); } ... } hw/vfio/region.c has no close() call for this fd. Each mmap/unmap cycle, device unplug or realize/unrealize therefore appears to leak one fd per region, together with the kernel dma-buf object behind it. O_CLOEXEC does not change that. The one fd is also shared by all nr_mmaps RAMBlocks, so it has no single owner. If RAM_PREALLOC were ever dropped, reclaim_ramblock() would call close(block->fd) once per sub-region, which would be a double close when nr_mmaps > 1. Should the fd be closed explicitly when the region is unmapped or finalized, and should the commit message be limited to the leak across exec? The series patch "VZ: vfio/region: preserve BAR mappings across cpr-exec" only adds cpr ramblock save/delete of the mmap addresses. It does not close the dma-buf fd either. --=20 Sashiko AI review =C2=B7 https://sashiko.vzint.dev/#/patchset/20261023-vfio= _v1-v5-0-ba0bf3c6d122@virtuozzo.com?part=3D3