| From c42ac86ee26bc637f0e8106469573cbcc908634b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 9 Jan 2024 12:10:23 +0100 |
| Subject: vduse: validate block features only with block devices |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Maxime Coquelin <maxime.coquelin@redhat.com> |
| |
| [ Upstream commit a115b5716fc9a64652aa9cb332070087178ffafa ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/vdpa/vdpa_user/vduse_dev.c | 9 +++++---- |
| 1 file changed, 5 insertions(+), 4 deletions(-) |
| |
| diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c |
| index 564864f039d20..898ef597338a2 100644 |
| --- a/drivers/vdpa/vdpa_user/vduse_dev.c |
| +++ b/drivers/vdpa/vdpa_user/vduse_dev.c |
| @@ -1227,13 +1227,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; |
| @@ -1260,7 +1261,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; |
| -- |
| 2.43.0 |
| |