]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
vduse: validate block features only with block devices
authorMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 9 Jan 2024 11:10:23 +0000 (12:10 +0100)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 19 Mar 2024 12:18:35 +0000 (08:18 -0400)
This patch is preliminary work to enable network device
type support to VDUSE.

As VIRTIO_BLK_F_CONFIG_WCE shares the same value as
VIRTIO_NET_F_HOST_TSO4, we need to restrict its check
to Virtio-blk device type.

Acked-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Xie Yongji <xieyongji@bytedance.com>
Reviewed-by: Eugenio Pérez <eperezma@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Message-Id: <20240109111025.1320976-2-maxime.coquelin@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vdpa/vdpa_user/vduse_dev.c

index 73c89701fc9d403183387e69b3b62e1e8e90db05..7c3d117b22debfa1758c564c381258ec3251a699 100644 (file)
@@ -1705,13 +1705,14 @@ static bool device_is_allowed(u32 device_id)
        return false;
 }
 
-static bool features_is_valid(u64 features)
+static bool features_is_valid(struct vduse_dev_config *config)
 {
-       if (!(features & (1ULL << VIRTIO_F_ACCESS_PLATFORM)))
+       if (!(config->features & BIT_ULL(VIRTIO_F_ACCESS_PLATFORM)))
                return false;
 
        /* Now we only support read-only configuration space */
-       if (features & (1ULL << VIRTIO_BLK_F_CONFIG_WCE))
+       if ((config->device_id == VIRTIO_ID_BLOCK) &&
+                       (config->features & BIT_ULL(VIRTIO_BLK_F_CONFIG_WCE)))
                return false;
 
        return true;
@@ -1738,7 +1739,7 @@ static bool vduse_validate_config(struct vduse_dev_config *config)
        if (!device_is_allowed(config->device_id))
                return false;
 
-       if (!features_is_valid(config->features))
+       if (!features_is_valid(config))
                return false;
 
        return true;