From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11023077.outbound.protection.outlook.com [40.107.159.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id 752E98015A for ; Tue, 8 Sep 2026 12:55:19 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GoZji3jna5KiWLeZ1ZR1BqBf+ohsbQCKvCcxmSffFPlH94i+o9A6ZZDrk1ePEHHrRp0Ax0wP8WRn5vxbyrrU+Oqbz3GCgAHbIPIo9SWf9ZbpffoSlasoV6o0bvULDFN/Yx/C73QpE31kGXaLWM8moi21PZirc4ZdmFozfD3stw9lCUoMFRIrk4ZPM1MG8CDk/Mt0mVpktj2KfWUwMlHCA9y7DW8m376m1p2EICwOnPXxMPhQz/qoSzMlDtsrw6w/2C0ihMNn0n1KDPQHCj5exs8MD4DXlsw3QpLbEYv9lSfu9ikyNt1AiRPSbVTpFT30xV3or3JvMlY3SMiJdTC6lA== 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=2SXvN9MHRU9pKZiDFAS2yjR6Iwo2uxZOKfj9R1zndiU=; b=lwpvyx5AiN9i4HyNLd7mqiVVhiiAdCurw6ZFGqNx06SDIFSZpepYqAG309Cum5qACni+iMQ8EshEB2AcWER2iGRge1IxgVZg4D5SRl+lzBE72tE/3G2t+xQNItdmNuWhktiVg/yW+03ymEMuHxhPcIs7tXHbTVAl8euIK/whr1DozEyKXsev5S/Mkc/71wJRGRjij1AD4MFCpYqEpw+IY4lKtJ9bdp1bYkBaEea0RnNLsIROTK7rLd8wHfuArENhkq7TnturaqGQNGzu1tMElTaDsEv8JbqFdx83pT/aPYfGdycPqJQVqwHpfq+H2BqlXynMsZbSJ00uP/7A+bUwzQ== 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=2SXvN9MHRU9pKZiDFAS2yjR6Iwo2uxZOKfj9R1zndiU=; b=Jln5xSYkA2O/AtFzJ/un8DFRAeHe52kB9igp16R1PY/7dARtJ4HtiQl+93GQ2KM9Ml8roYA903rew3GBWvoe85Bat1P0iFPIq02R+Imz6oWLCXzXgK/5Jri89Ep8uKAz3T4xXJMOT4o4f2rFZPvD3W9JPZqnYhepy4cEi7h7z2z+6ZWr418z6AFFyHwUxlBpy0AKY+3IKDplwyhdlc2dWfilkBKN2WjuiPPSmOSfuzJ+47u7ANgAVBcyP52myYTW6h4mIEdK3JdIl+0J4TYAI/MYa84DAPG5K/hJ9Kx4SgNLTmaydc6XlBx6rwbEuz/B8KYqMK5DA6e00YD+ALXiGQ== Received: from PA7P264CA0323.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:395::11) by FRZPR08MB11161.eurprd08.prod.outlook.com (2603:10a6:d10:135::12) 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 12:55:11 +0000 Received: from MI3PEPF0000855B.eurprd05.prod.outlook.com (2603:10a6:102:395:cafe::4d) by PA7P264CA0323.outlook.office365.com (2603:10a6:102:395::11) 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 12:55:10 +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 MI3PEPF0000855B.mail.protection.outlook.com (10.167.240.23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.5 via Frontend Transport; Tue, 8 Sep 2026 12:55:09 +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=2SXvN9MHRU9pKZiDFAS2yjR6Iwo2uxZOKfj9R1zndiU=; b=doT9QQcaSh1/ hxl7qAG5fQ3VNH/G6Nt5ch1Nru2ci9894i01ep417wSevWjMfpQAdY696FXyHoF7iX6bcQZ7xsMYP vgZSW9Ag3A7JOyYuaO0stDgW3vuPO/oat19AmjibVQNFlTPQd+1db6aoH/CN0A9Mh7YvqwMakxWza Dl2nsoCgKIqSHSwNGkaUKlFLnBAT62ezi6E0of8Fi+OwW9NDv5fdUvbEXSxJn9JSztLvO/VNEHHmN 4DcQoeBkUtfMVtdmalrFDA0BdvWLHhaJZcsp04wo7T3SC0dZ5Comd1YBKRkRceBQk1FfQOyPBYEXM MFhGyi60YyGymV4XVF6FYw==; 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 1x3vJP-009opv-0n; Tue, 08 Sep 2026 14:54:59 +0200 From: Andrey Zhadchenko To: svt-core@virtuozzo.com Cc: den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [QEMU HCI-8.0 PATCH v4 1/5] vhost-blk: improve vhost_blk_device_realize cleanup Date: Tue, 8 Sep 2026 15:52:04 +0300 Message-ID: <20260908125208.278402-2-andrey.zhadchenko@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260908125208.278402-1-andrey.zhadchenko@virtuozzo.com> References: <20260908125208.278402-1-andrey.zhadchenko@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MI3PEPF0000855B:EE_|FRZPR08MB11161:EE_ X-MS-Office365-Filtering-Correlation-Id: 06749432-d0e8-4b77-82d9-08df0da86a5c 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|82310400026|36860700016|1800799024|23010399003|376014|10067099003|6133799003|5113699003|18002099003|22082099003|57112099003|13003099007; X-Microsoft-Antispam-Message-Info: /rG6DSZzTymeysnEPLtrE5cbmKr8OIcXJyH5RgQMPWLZBQ8EbK8f1sveaoD68Tl08JWT6RKykNjVQE8obwAOS1iOQ3JHbhjPcUecGWtbgXSziA+5iNMtS01s+MWv8dhqmpW/NzHwHNSQjy5uD41/fRG6E81ptKl9P6Ll2OCkiOGTrOy3M2oLxpRfenPvSqcMTExizQfzVBBtIT4HAvVQXQtnXItAOjdhg3/cK2mAiFb3tB+O6NnqZaGpN9fbLP26Z3lrB7e/NNROO2Poj/kvK37goooe9a5xBVuH3SdeLeWbQH/eWCp3AW5QjhYHmE9xfvn/sXx/vxf0WCK4dndnFfW0OrpKNjrO5lEoyCTXIz8NvoLfDzAYqfYlzCFoGLpqNh2bWGCg31CHhfkeN1PXCqRKbuPicyBnbKz/ly9P6dg0r1bavuYE77C1vD/FQjDya9pTeOD2GaD9+TncRbll3aMWwNOtFy7QGbLETSamU9HjZJlKMgAHmiuITU9nk7dySx4he5EIx65BkXUeMKggjV7Tx2/3REc/NwTe7bfIGocuYRE/vwgOzAkezVZO+guNcv8lytjIoW/JHL2fVfSBq/jD5n2PL3cE1Vjpw2S7uSmhYnMvrB5VXlNqz4IhjmWv2SHslhiY1ogUUaQzhlzgA54MFELaZmpkpXkIIac/UUTGeBbCQc1gf2uC46Lkl4C/o9gU93rRkvE4jwdDTeCWSSI3A882GLJwZblf3GITt8SIaVBZP/alD3YUCnvfkENfleuAjlXQj2oBPVvW7S9BVXT+7YPZLhohejUd83tAolejhZjMpltUQG2+/X0qUCxcrmn22uv2S1+P+OF6QUrbQSaG4ZK/sZwL44YYIH+aB5qL21OgfvkFSKxUKGZwmMBcyf/nEHytxrI9t2oBUNTOUxNdQXmPD7raDf/gGVhEerg= 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)(82310400026)(36860700016)(1800799024)(23010399003)(376014)(10067099003)(6133799003)(5113699003)(18002099003)(22082099003)(57112099003)(13003099007);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HMITzajXbsZBPfArAn4BNSZXi/MJU9NOiaMm2J7UP8USReiYzq0Q7DJd7WbdqszmyDTqw5+4I/i8ubASXARIOl/q7HNIJGT9PEEjWrBYZESK4y0dEoqf7Q2Te5cVubBAiNb4PXOvH52HjP7YDgcKamDNCj7ewIyXuexV8CrM5Oy3cyQxOSdqVUpCK/nn8o27FMddhUufsoz5FvgFpZxLXO0Dzxgs0SzH0239nl8u3nJXmCC0fvThTCLrqol1InUCrsdjhyQzG9RfWj4ilWvKqK42q5UZOw2nqaJBDOe537ck+u02lXc8ikn2UGAiT560eMYVn30/NJ89M0h7GTQHxTjgVZYko43UNJrp6nyeDAGwWJ0acmAP9s5ovUXSEDsYoAQWKKErorYzPwlbSnwyOS1M1FiJU0XcSaeYSBO7AfNDOqfk6Si2PwYq3NGkwj4N X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2026 12:55:09.9566 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 06749432-d0e8-4b77-82d9-08df0da86a5c 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: MI3PEPF0000855B.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB11161 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 Reviewed-by: Andrey Drobyshev 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