All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Yuho Choi" <oss.patchbox@gmail.com>
Cc: virtualization@lists.linux.dev, kvm@vger.kernel.org,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Eugenio Perez" <eperezma@redhat.com>
Subject: Re: [PATCH v1] vhost-scsi: do not validate vrings during endpoint teardown
Date: Sat, 07 Nov 2026 05:48:24 +0000	[thread overview]
Message-ID: <sashiko-outbox-202636@kernel.org> (raw)
In-Reply-To: <20261106054811.281798-2-oss.patchbox@gmail.com>

Thank you for your contribution! Sashiko AI review found no new issues
in this patch, but noticed 1 related pre-existing issue it does not
introduce:
- [High] vhost-scsi: unhandled vhost_vq_init_access() failure in
  vhost_scsi_set_endpoint() [1]
--

commit b696a8fa1d0b9b5e5c27a63e36f3d5e5c268720d
Author: Yuho Choi <oss.patchbox@gmail.com>

vhost-scsi: do not validate vrings during endpoint teardown

This commit removes the vhost_vq_access_ok() check from
vhost_scsi_clear_endpoint() so that endpoint teardown always disables the
virtqueue backends and waits for in-flight SCSI commands before state is
freed.

> diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
> index e44044449cef8..f0966f25b09a9 100644
> --- a/drivers/vhost/scsi.c
> +++ b/drivers/vhost/scsi.c
> @@ -2194,17 +2194,10 @@ vhost_scsi_clear_endpoint(struct vhost_scsi *vs,
>  	struct vhost_scsi_tpg *tpg;
>  	struct vhost_virtqueue *vq;
>  	bool match = false;
> -	int index, ret, i;
> +	int ret, i;
>  	u8 target;
>  
>  	mutex_lock(&vs->dev.mutex);
> -	/* Verify that ring has been setup correctly. */
> -	for (index = 0; index < vs->dev.nvqs; ++index) {
> -		if (!vhost_vq_access_ok(&vs->vqs[index].vq)) {
> -			ret = -EFAULT;
> -			goto err_dev;
> -		}
> -	}
>  
>  	if (!vs->vs_tpg) {
>  		ret = 0;

[Severity: High]
This problem wasn't introduced by this patch, but should the paired
vhost_scsi_set_endpoint() path check the return value of
vhost_vq_init_access() [1]?

drivers/vhost/scsi.c:vhost_scsi_set_endpoint() {
    ...
		for (i = 0; i < vs->dev.nvqs; i++) {
			vq = &vs->vqs[i].vq;
			if (i >= VHOST_SCSI_VQ_IO && !vs->vqs[i].scsi_cmds)
				continue;

			mutex_lock(&vq->mutex);
			vhost_vq_set_backend(vq, vs_tpg);
			vhost_vq_init_access(vq);
			mutex_unlock(&vq->mutex);
		}
    ...
}

If userspace invokes VHOST_SCSI_SET_ENDPOINT before configuring the vring
addresses, vhost_vq_init_access() fails for the control and event
virtqueues while their backends remain set to vs_tpg, leaving
last_used_idx uninitialized and breaking event delivery and control
command handling.

[1] https://sashiko.dev/#/bug/linux-00d9df6c-e264-4a85-ae70-5ede3bace73b

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261106054811.281798-2-oss.patchbox@gmail.com?part=1

  reply	other threads:[~2026-11-07  5:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-06  5:48 [PATCH v1] vhost-scsi: do not validate vrings during endpoint teardown Yuho Choi
2026-11-07  5:48 ` sashiko-bot [this message]
2026-11-08 19:05 ` Mike Christie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-202636@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=eperezma@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=oss.patchbox@gmail.com \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=virtualization@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.