From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11021086.outbound.protection.outlook.com [52.101.65.86]) by lore.virtuozzo.com (Postfix) with ESMTPS id 8E11D8015D for ; Tue, 8 Sep 2026 01:07:52 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ok4qE3SzmvRlO1HWFmOoO8wPpZdusZz3XmaZtrD8X3kjLxWSEo35/XEJtDwFa7CSi5nK3T2mb2NIvP/DD2VWmE3B6VXtUCa3c0l0Wk7a9kN0JZlZGYWx5l+CxPWZWowHyq0isu3xzaQCs/d1Jc/B0T+r6em7mwY+Onlv33kphbTcY7GVmnGRxgktFtW9c2M7AXnsKX0J7Nk9uuoweEWm0dAdaB/OFCfp7VZsTSzPQTTDts7m/pFegtMP/aIRRhC6ocyCYHrJLju7HeBLuk3fKXOqj//EnALKF9uUip0FwrUCvI6+n03WwsbQ7ciiOUT1QtNJJTBxiNp+aKYDf/slqg== 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=UowhsnwizCVr//JIM489wmaFhrR+xXIL+G3P+T6X8KA=; b=xtCD7Y54TofHlSLHGd3wDCWYSJi8wWaacMx0g0y+Mo4bDcZmr60QMSXPzA6x5T30yRp+LbrJ+ldkUtn7SbLApNFIY3QsIBw00YZ2kerXKvTvqtylOsRgIiH9NBjmmiLs1bFoTnZR7Cr61BYH3FTZo9BW+MyknA3sCT4IrJHxxZnZpE8y+lV3faYKbla8+tV2QRTidStWSX+b77bSkmA2S2sv41IM+axLcuaZNL2sTA4I2xp2bGcIfeF0juMLbek2nuZVRvgFxO0aoBL592TYBGJPCN3A6Psq7GI6P7g7gpsj06gZKkygMW6l7hnuf+RqN6kDcoZhNBSOyzWbkuMbpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 130.117.225.111) smtp.rcpttodomain=virtuozzo.com smtp.mailfrom=virtuozzo.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=virtuozzo.com; dkim=pass (signature was verified) header.d=virtuozzo.com; arc=none (0) 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=UowhsnwizCVr//JIM489wmaFhrR+xXIL+G3P+T6X8KA=; b=og9hD0/nqn9gFQTrY23qY6k1wa4WlyiC9FxTtKnvao8N9TKqfFAWxsK/Ky/yKAE/ZbFAM6dV8gDeUK2tZ56Tjpk+Ir3QEbYtySiDsBlJshxu+IUlfBBGpNiiBE5HC8CJ3/dyxb9w6GBgFB0o25y5KDAxvZe6dSStceuzeg7BYIw8oeg1S34Yq26e3OxV06XapPXmBc/34xDXuXaE7wDFu+d0uhnee3xV1IeI9Vts8r9MYG12Bat7c0Ory7zqFQoD2pHMmaKx+2PncDx7AB2d11rAtFXUu/Q46A1mYbx7LdA2XDvafr/+U8wrA0U6yy6hbr22YWU3HRWIKIAhppnx0Q== Received: from DU7P195CA0008.EURP195.PROD.OUTLOOK.COM (2603:10a6:10:54d::35) by PAXPR08MB6414.eurprd08.prod.outlook.com (2603:10a6:102:12e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.6; Tue, 8 Sep 2026 01:07:49 +0000 Received: from DU2PEPF00028D10.eurprd03.prod.outlook.com (2603:10a6:10:54d:cafe::1a) by DU7P195CA0008.outlook.office365.com (2603:10a6:10:54d::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.15 via Frontend Transport; Tue, 8 Sep 2026 01:07:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 130.117.225.111) smtp.mailfrom=virtuozzo.com; dkim=pass (signature was verified) header.d=virtuozzo.com;dmarc=pass action=none header.from=virtuozzo.com; Received-SPF: Pass (protection.outlook.com: domain of virtuozzo.com designates 130.117.225.111 as permitted sender) receiver=protection.outlook.com; client-ip=130.117.225.111; helo=relay.virtuozzo.com; pr=C Received: from relay.virtuozzo.com (130.117.225.111) by DU2PEPF00028D10.mail.protection.outlook.com (10.167.242.24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 8 Sep 2026 01:07:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=UowhsnwizCVr//JIM489wmaFhrR+xXIL+G3P+T6X8KA=; b=j7RezbUEG4J/ P5PLQmvyLeRs3/S6KdCYn23iTOojqZq7084H655aOVXFvcyVTsGLhMeTBv7gBzpGO1p+0zKwZ/9c0 y/YA7Tbn60QytoufFcbbj/ngsrVojZWZ5eNalkSX5fcOUvxD4yalqbECs/MT16jLi3dfP3C7K1e8g 2D4IoEMs614rSHxjXw4p3mTdzqPTsDa+Nu8wPk3T6a96V9GFyR3u1NrXJKmivDX6abvLXiyiwRxye OknsazfU+7WhZTcI2Ic/5M+n4XqDRUVFgh3XIPt60WjpsOO9ieL3FVVJL6xdmQeVpkZOIMAC/+X5t QGmfecL6IHulv3o21jdDpg==; Received: from [130.117.225.5] (helo=vz9-demens-1.aci.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1x3kGt-00DU8a-0K; Tue, 08 Sep 2026 03:07:39 +0200 From: Andrey Zhadchenko To: svt-core@virtuozzo.com Cc: den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [QEMU HCI-8.0 PATCH v3 1/5] vhost-blk: improve vhost_blk_device_realize cleanup Date: Tue, 8 Sep 2026 04:04:51 +0300 Message-ID: <20260908010455.249679-2-andrey.zhadchenko@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260908010455.249679-1-andrey.zhadchenko@virtuozzo.com> References: <20260908010455.249679-1-andrey.zhadchenko@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PEPF00028D10:EE_|PAXPR08MB6414:EE_ X-MS-Office365-Filtering-Correlation-Id: 9a5194fe-12fe-48ea-ba8f-08df0d4599a6 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|23010399003|82310400026|36860700016|376014|1800799024|10067099003|6133799003|5113699003|18002099003|22082099003|57112099003|13003099007; X-Microsoft-Antispam-Message-Info: jXAAHyPWhencn9ejHVNJjN68YUZg74xAkuhSN4b/8Oj+9dzGFcaCeJCYSKL5PucXt4c5VxFku6RY6f134S3UFQVY+ilwrlh03LzG30SuC6oYiZg/aQbkZ5wPCTgL4Vb/SeVDFgnc2Xxi2Sa1Bi7emKw+QrXQoGMS1+oIYEke7/59FAAKtBcTvY+RzpJBpwBfX3bXBKrbwN68TAT0Ha4kPxURdGFVVrL2vmVj2HF7tsaTXHB+ikX8p22cExHp4jwqQuFh++D0bcltlkZ9dlG8JNhfBHcozITVXlsSQ5uaLd6WVdTiu6gTUJCBIj5JyFzdCuGHo+W5RTCQl7cGfbA37se3OIaYIew6vqrbO5qY7Fj2w+E7IKX+BCBItP4DPjjsE1Q3lSE2IR/P0F5ChP5atQ2dncG7f3w95Qpg7Gl18ol2RLjMULYLQA2Bhj8HtGE55xyww4NwwCSGidbw2WY5Pw/MEKji68oyFFB4W3iwGoljQ6YuUHugZslxvNLL1Qlg4nx7LacWUVFMiCTj29psIJgvbYYpEzFOfzDuGTlxHLngTogWLc0fn0cjIZRYcRYWcl/Lq43CuQ/7lwqIUPgRaOoo1/JpS5TJ0MAwCo0sQNl1uOa0rC63gJ9sIiq90i8j0vEEvvW1MUFZLvPQQQgfhvP7vwAXr5ZhpqTzUAskl/qvCj7pZmRqD7kchzDhJWb63jEZNOLTCBDqInwINQ7x7mfSTedey+Pp1FYqhZB4r7Qua99SeA+YEs+4cH+8+Sks2F0jZK+b0upvG6zRcv2yhB3TXeN+oCS4Fg/jZG2s+M6U+6J996HgEHI1sCfZs2/nCbiT6CenCE7l0fwFDPlvKcMDul53bIAP+gUej03WXhlLtpIFDpuUA5Tc7eHxd0uslzvHhw3YCYQ8mjPXTbAaawAj6pIMeic72+s/XL90ZUQ= X-Forefront-Antispam-Report: CIP:130.117.225.111;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:relay.virtuozzo.com;PTR:relay.virtuozzo.com;CAT:NONE;SFS:(13230040)(23010399003)(82310400026)(36860700016)(376014)(1800799024)(10067099003)(6133799003)(5113699003)(18002099003)(22082099003)(57112099003)(13003099007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: sLQEQSLQf4dgAay/o9jG+8+Qu4RWXYruuB9GdwgrTDUlzh4JIJHr7rBLaLq9D3ofVi3TFbHZ4xZB6eqJFFT7QT9+NF/2TQRicdB6J0uPh9ZAqQyGOYNDbs1vUM/P/ClBypaM+djNbOalOVkOxnTecDKbwvUxAkIOKlw/ovGVGJ4jx7kVqtz+pSkf1RClAMAuIW08+id7+pLqeV+wX3dWkRGVJjDsRYNgourIO6RXYjmJ+3ddu2tAtQE+OuOJrspGJubwPZZnXtyW7SqFgBu6bvSbnKwxdRHy5ZBCjXeihDSCFC0C3CcA0dIyUhh5uMT38EU0ftNJ/w/H753xytWhDcFTkoD+xqf+149gM/1KcZrni7ea+VHrVp/sXljh1vjNvJwRPbEt8DCdg8Kxv/+np21araunvp1XJzcPpXAe8t39jRZF3fOO2Ze8MPcpm6NR X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2026 01:07:49.0891 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a5194fe-12fe-48ea-ba8f-08df0d4599a6 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0bc7f26d-0264-416e-a6fc-8352af79c58f;Ip=[130.117.225.111];Helo=[relay.virtuozzo.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D10.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6414 vhost_dev_init() does a lot of unexpected things: - closes the backend fd on failure - memsets dev as 0 (thus clearing dev->vqs) Cleanup properly: don't double-close vhostfd, factor out vqs so we do not leak it during cleanup. Fixes: 0ff3cb5ff2 ("block: add vhost-blk backend") https://virtuozzo.atlassian.net/browse/VSTOR-143437 Signed-off-by: Andrey Zhadchenko --- v2: - old patch dropped v3: - extend the double-close fix to preserve and free vqs after vhost_dev_init() clears dev hw/block/vhost-blk.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/hw/block/vhost-blk.c b/hw/block/vhost-blk.c index c52851fcf8..20c2f41691 100644 --- a/hw/block/vhost-blk.c +++ b/hw/block/vhost-blk.c @@ -237,6 +237,7 @@ static void vhost_blk_device_realize(DeviceState *dev, Error **errp) VirtIODevice *vdev = VIRTIO_DEVICE(dev); VHostBlk *s = VHOST_BLK(vdev); VhostBlkConf *conf = &s->conf; + struct vhost_virtqueue *vqs; int i, ret; if (!conf->conf.blk) { @@ -289,7 +290,8 @@ static void vhost_blk_device_realize(DeviceState *dev, Error **errp) s->dev.nvqs = conf->num_queues; s->dev.max_queues = conf->num_queues; - s->dev.vqs = g_new0(struct vhost_virtqueue, s->dev.nvqs); + vqs = g_new0(struct vhost_virtqueue, s->dev.nvqs); + s->dev.vqs = vqs; s->dev.vq_index = 0; virtio_init(vdev, VIRTIO_ID_BLOCK, sizeof(struct virtio_blk_config)); @@ -318,6 +320,8 @@ static void vhost_blk_device_realize(DeviceState *dev, Error **errp) if (ret < 0) { error_setg(errp, "vhost-blk: vhost initialization failed: %s", strerror(-ret)); + /* vhost_dev_init() closes vhostfd on failure */ + s->vhostfd = -1; goto cleanup; } @@ -327,8 +331,11 @@ cleanup: if (s->mighand) { qemu_del_vm_change_state_handler(s->mighand); } - g_free(s->dev.vqs); - close(s->vhostfd); + g_free(vqs); + if (s->vhostfd >= 0) { + close(s->vhostfd); + s->vhostfd = -1; + } for (i = 0; i < conf->num_queues; i++) { virtio_del_queue(vdev, i); } @@ -470,6 +477,7 @@ static void vhost_blk_instance_init(Object *obj) { VHostBlk *s = VHOST_BLK(obj); + s->vhostfd = -1; device_add_bootindex_property(obj, &s->conf.conf.bootindex, "bootindex", "/disk@0,0", DEVICE(obj)); -- 2.43.5