On Fri, Jun 12, 2026 at 07:57:15PM +0300, Andrey Drobyshev wrote:
From: Pavel Tikhomirov <[email protected]>

Split the actual backend dropping part from vhost_vsock_stop.  We're
going to need it for the VHOST_RESET_OWNER implementation in the
following patch, when vsock->dev.mutex is already taken and owner is
checked.

Signed-off-by: Pavel Tikhomirov <[email protected]>
---
drivers/vhost/vsock.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)

LGTM!

Reviewed-by: Stefano Garzarella <[email protected]>


diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
index 9aaab6bb8061..b12221ce6faf 100644
--- a/drivers/vhost/vsock.c
+++ b/drivers/vhost/vsock.c
@@ -664,9 +664,24 @@ static int vhost_vsock_start(struct vhost_vsock *vsock)
        return ret;
}

-static int vhost_vsock_stop(struct vhost_vsock *vsock, bool check_owner)
+static void vhost_vsock_drop_backends(struct vhost_vsock *vsock)
{
+       struct vhost_virtqueue *vq;
        size_t i;
+
+       lockdep_assert_held(&vsock->dev.mutex);
+
+       for (i = 0; i < ARRAY_SIZE(vsock->vqs); i++) {
+               vq = &vsock->vqs[i];
+
+               mutex_lock(&vq->mutex);
+               vhost_vq_set_backend(vq, NULL);
+               mutex_unlock(&vq->mutex);
+       }
+}
+
+static int vhost_vsock_stop(struct vhost_vsock *vsock, bool check_owner)
+{
        int ret = 0;

        mutex_lock(&vsock->dev.mutex);
@@ -677,14 +692,7 @@ static int vhost_vsock_stop(struct vhost_vsock *vsock, 
bool check_owner)
                        goto err;
        }

-       for (i = 0; i < ARRAY_SIZE(vsock->vqs); i++) {
-               struct vhost_virtqueue *vq = &vsock->vqs[i];
-
-               mutex_lock(&vq->mutex);
-               vhost_vq_set_backend(vq, NULL);
-               mutex_unlock(&vq->mutex);
-       }
-
+       vhost_vsock_drop_backends(vsock);
err:
        mutex_unlock(&vsock->dev.mutex);
        return ret;
--
2.47.1



Reply via email to