From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id E091E80D0E for ; Tue, 27 Oct 2026 11:40:06 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69RBcnhk027429; Tue, 27 Oct 2026 14:38:50 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69RBcnhk027429 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="lke27Ri5" Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 69RBcYeb027403 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Tue, 27 Oct 2026 14:38:35 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 69RBcYeb027403 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-48dfaaea30cso2896478f8f.0 for ; Tue, 27 Oct 2026 04:38:35 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvByecBD3oOcm4DDngC+E8qo+xdDWvsaVEjaptr6/YnM/9QlQu/9jI1aZEefvjC5d712jrG+4aA==@openvz.org X-Gm-Message-State: AFq9FYIcJjo7u3zDB30VaCJLd0csuLY57OKpSL1gxSSzmjXVLF2PvV48 nTpuVhz5CwfRTLT774h2t8Qegpng9Sf9lzZuOrlBawiMt3RZf+XlsbI0bUZ3sNrPOjJdkJ+vrwQ wVTt1+ubChiBaFiMEA2x56GRvFhhf1xQ1kTB5OcnNM63W1WHaJTZPZg== X-Gm-Gg: AYBFou1qine79ADu4Tbgbx7XtpDTfUfvZSB/1l6f8ugM3pdT/eFz1pOoYLrwcDF3i79 wmt3MKLNlC0o+gBYbwWjTirjiWNR0Vm5Ulhondqcmtu9dG9yYMCgPAizBXyjwhCj7k0VdAkdB/I jMr8457NaLaK1VnxF6XsWAzu406DRZLqhmCFysu+dool0SPNtMLWEOGAKTRhm7C5pthu0RfGDmV Y+/K9ISczbOipibjLCCvctOwFKUwvlz9bz70jDoDWmVSFhG7ISpG9lDGViRwnhLRcHxQkrdBgxT +EKZ/GWPoxOu82r3KZWPxHRk+jGfkI8qt5YhoXO7tFRUTuM9fyccL7mK7oR4tq2AKOZHI5bJhhc E/ew65xrsU4jJYxW7gvurN00kh8TD X-Received: by 2002:a5d:5f56:0:b0:48e:f10:ceb8 with SMTP id ffacd0b85a97d-48e3eb759fcmr17961458f8f.11.1793101114462; Tue, 27 Oct 2026 04:38:34 -0700 (PDT) X-Received: by 2002:a5d:5f56:0:b0:48e:f10:ceb8 with SMTP id ffacd0b85a97d-48e3eb759fcmr17961397f8f.11.1793101113893; Tue, 27 Oct 2026 04:38:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1793101113; cv=none; d=google.com; s=arc-20260327; b=grM0PurctNBsn/ye3/fWbkT0N3IwAfzuOP42FiiV2/UXRBy+bBNMoYM713J6VUyiFX sR7l/rjlfXy0md2hOHNmcHqkaX1dJhSdo7aV+PdSj/PSsPwFhhjswqT/B/MkbrdC+M3v FaX0ZEPS6/86G6ohOR4atuiZFfiLZYUgEMSnmX63VKxdV2mmyqHkhLOULu/B8BYVArTe bk7qrulVSbfBjOL5LNcY6SjcF/BxUSrUPvlsuOUEcoCRGBlXw7+taYK1O4m/FV9NjDRP rTaFjtaAlJF7/TkdenPWR+aMMm3ebYFZTfULldtTwONftlDEc5bvhfpOm4qzdSeWFv+L pcPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=4FeiASVqgCq5PPUKaC3DoeYDwL86mpu8lOEQkR5RBjE=; fh=1MEQxOGYABaQPNQS1Ckioh0rrUOwgCYjd8t5csgx5as=; b=Pd+JvjH8XaoB/jsfTE7rli43eVyVnovaN3/2zhkI1fMqjn44dquuAzlJHFA/i9FlaC nq36hdpMKh/br0GeY5qsJQfWC/p7+1uF0YouacgP5jlf1AQRGEDGLNrp8GUKlws6wKU3 mM8oPoRnnqEkN+ZYz7QV3fjbpYcwAl80Rnx0ENWhvTwg2FPHaomzgGlbRR6tQGsVplD/ fsUKNFgufdB8e2Q0tHHJktB//y1eLjDqfgeoyryrJhsqdRdkrphW4HiBtUyB4x4K7+T8 TnuwnsbCvYltIAmH0/o7l3gKURCQQGIpxn2vedgcwkk7+vqYk7XAxgKUMKvq5rSJtfL+ fBpg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=lke27Ri5; spf=pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48e3ed0cb69si18086470f8f.331.2026.10.27.04.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Oct 2026 04:38:33 -0700 (PDT) Received-SPF: pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=lke27Ri5; spf=pass (google.com: domain of alexander.ivanov@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=alexander.ivanov@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com 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=4FeiASVqgCq5PPUKaC3DoeYDwL86mpu8lOEQkR5RBjE=; b=lke27Ri5oCZX kPJWin/zGbZ/tHdIFnwnn+/bEyKyy7l6OCPOGa1jW72sAieXbz93BrlK4nqj7/NZn9K1xNABxefkr JmWuZ+ll3Ld3fhvzM96JWr1Mj/lJUHHLxT/T+gjOLEsGnq11rvkqsEfdSM91rZhGGEOQ8/rTz9kuE l8m9RQdVGfW5vm9qysv+FW7yN7PsSG67Io+SDkbKPpAgeWgC9v0LP6VYf4jv/k4Qj5Ed8fId+I5vy atpNoLkEbuRs51BfTnRoEAezBf2sWCmFi+rQ+VfkWLWFdPMvkpd/PENjXTpEpT2UpvR5mw/UA130y wR2SME1Kx3E0/r4wuF92Ww==; Received: from ch-vpn.virtuozzo.com ([130.117.225.6] helo=sky) by relay.virtuozzo.com with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1xLfRw-00BIax-2e; Tue, 27 Oct 2026 12:38:23 +0100 From: Alexander Ivanov To: andrey.zhadchenko@virtuozzo.com Date: Tue, 27 Oct 2026 12:38:28 +0100 Message-ID: <20261027113830.2927925-2-alexander.ivanov@virtuozzo.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261027113830.2927925-1-alexander.ivanov@virtuozzo.com> References: <20261027113830.2927925-1-alexander.ivanov@virtuozzo.com> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 1/2] Revert "drivers/vhost: add ioctl to increase the number of workers" X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org This reverts commit 1491588e71dafc934c8d450ba36cc33bb0f990bd. VHOST_SET_NWORKERS was a stopgap to run our userspace on the rh10 kernel unchanged. Userspace should use the mainstream worker ioctls (VHOST_NEW_WORKER, VHOST_ATTACH_VRING_WORKER etc.) instead. It is also unsafe next to those ioctls. vhost_set_workers() installs its workers into vq->worker bypassing __vhost_vq_attach_worker(), so their attachment_cnt stays 0. VHOST_FREE_WORKER then destroys such a worker while a virtqueue still points at it, and the next vhost_vq_work_queue() on that vq is a use-after-free. vhost-scsi exposes this to the device owner. The 0x1F ioctl number is freed: VHOST_SET_NWORKERS now fails with -ENOTTY, so userspace that still issues it has to be updated together with this kernel. https://virtuozzo.atlassian.net/browse/VSTOR-107537 Feature: vhost-blk: in-kernel accelerator for virtio-blk guests Signed-off-by: Alexander Ivanov --- drivers/vhost/vhost.c | 52 +------------------------------------- drivers/vhost/vhost.h | 1 - include/uapi/linux/vhost.h | 8 ------ 3 files changed, 1 insertion(+), 60 deletions(-) diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 1057ba7e3fc7..56c0ecbb8352 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -605,8 +605,6 @@ void vhost_dev_init(struct vhost_dev *dev, spin_lock_init(&dev->iotlb_lock); xa_init_flags(&dev->worker_xa, XA_FLAGS_ALLOC); - dev->workers_set = false; - for (i = 0; i < dev->nvqs; ++i) { vq = dev->vqs[i]; vq->log = NULL; @@ -1089,42 +1087,6 @@ long vhost_worker_ioctl(struct vhost_dev *dev, unsigned int ioctl, } EXPORT_SYMBOL_GPL(vhost_worker_ioctl); -static void vhost_propagate_workers(struct vhost_dev *dev, int nworkers) -{ - int i, j = 0; - - for (i = nworkers; i < dev->nvqs; i++) { - dev->vqs[i]->worker = dev->vqs[j]->worker; - if (++j >= nworkers) - j = 0; - } -} - - -static int vhost_set_workers(struct vhost_dev *dev, int n) -{ - struct vhost_worker *worker; - int i, ret = 0; - - if (n > dev->nvqs) - n = dev->nvqs; - - dev->workers_set = true; - - for (i = 1; i < n; i++) { - worker = vhost_worker_create(dev); - if (!worker) { - ret = -ENOMEM; - break; - } - dev->vqs[i]->worker = worker; - } - - vhost_propagate_workers(dev, i); - - return ret; -} - /* Caller should have device mutex */ long vhost_dev_set_owner(struct vhost_dev *dev) { @@ -1259,7 +1221,6 @@ void vhost_dev_cleanup(struct vhost_dev *dev) wake_up_interruptible_poll(&dev->wait, EPOLLIN | EPOLLRDNORM); vhost_workers_free(dev); vhost_detach_mm(dev); - dev->workers_set = false; } EXPORT_SYMBOL_GPL(vhost_dev_cleanup); @@ -2345,7 +2306,7 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp) struct eventfd_ctx *ctx; u64 p; long r; - int i, fd, n; + int i, fd; /* If you are not the owner, you can become one */ if (ioctl == VHOST_SET_OWNER) { @@ -2441,17 +2402,6 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp) if (ctx) eventfd_ctx_put(ctx); break; - case VHOST_SET_NWORKERS: - r = get_user(n, (int __user *)argp); - if (r < 0) - break; - if (d->workers_set) { - r = -EINVAL; - break; - } - - r = vhost_set_workers(d, n); - break; default: r = -ENOIOCTLCMD; break; diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h index 37ade2f1cb7d..077fa4d0cf36 100644 --- a/drivers/vhost/vhost.h +++ b/drivers/vhost/vhost.h @@ -198,7 +198,6 @@ struct vhost_dev { * The default value is set by fork_from_owner_default */ bool fork_owner; - bool workers_set; int (*msg_handler)(struct vhost_dev *dev, u32 asid, struct vhost_iotlb_msg *msg); }; diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h index 5553522fbf48..4371703948b9 100644 --- a/include/uapi/linux/vhost.h +++ b/include/uapi/linux/vhost.h @@ -102,14 +102,6 @@ #define VHOST_GET_VRING_WORKER _IOWR(VHOST_VIRTIO, 0x16, \ struct vhost_vring_worker) -/* Set number of vhost workers. - * This can be done only once until reset. - * All workers are freed upon reset. - * If the value is too big it is silently truncated to the maximum number of - * supported vhost workers - */ -#define VHOST_SET_NWORKERS _IOW(VHOST_VIRTIO, 0x1F, int) - /* The following ioctls use eventfd file descriptors to signal and poll * for events. */ -- 2.53.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel