On 2021/1/19 下午12:59, Xie Yongji wrote:
With VDUSE, we should be able to support all kinds of virtio devices.

Signed-off-by: Xie Yongji <xieyon...@bytedance.com>
---
  drivers/vhost/vdpa.c | 29 +++--------------------------
  1 file changed, 3 insertions(+), 26 deletions(-)

diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index 29ed4173f04e..448be7875b6d 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -22,6 +22,7 @@
  #include <linux/nospec.h>
  #include <linux/vhost.h>
  #include <linux/virtio_net.h>
+#include <linux/virtio_blk.h>
#include "vhost.h" @@ -185,26 +186,6 @@ static long vhost_vdpa_set_status(struct vhost_vdpa *v, u8 __user *statusp)
        return 0;
  }
-static int vhost_vdpa_config_validate(struct vhost_vdpa *v,
-                                     struct vhost_vdpa_config *c)
-{
-       long size = 0;
-
-       switch (v->virtio_id) {
-       case VIRTIO_ID_NET:
-               size = sizeof(struct virtio_net_config);
-               break;
-       }
-
-       if (c->len == 0)
-               return -EINVAL;
-
-       if (c->len > size - c->off)
-               return -E2BIG;
-
-       return 0;
-}


I think we should use a separate patch for this.

Thanks


-
  static long vhost_vdpa_get_config(struct vhost_vdpa *v,
                                  struct vhost_vdpa_config __user *c)
  {
@@ -215,7 +196,7 @@ static long vhost_vdpa_get_config(struct vhost_vdpa *v,
if (copy_from_user(&config, c, size))
                return -EFAULT;
-       if (vhost_vdpa_config_validate(v, &config))
+       if (config.len == 0)
                return -EINVAL;
        buf = kvzalloc(config.len, GFP_KERNEL);
        if (!buf)
@@ -243,7 +224,7 @@ static long vhost_vdpa_set_config(struct vhost_vdpa *v,
if (copy_from_user(&config, c, size))
                return -EFAULT;
-       if (vhost_vdpa_config_validate(v, &config))
+       if (config.len == 0)
                return -EINVAL;
        buf = kvzalloc(config.len, GFP_KERNEL);
        if (!buf)
@@ -1025,10 +1006,6 @@ static int vhost_vdpa_probe(struct vdpa_device *vdpa)
        int minor;
        int r;
- /* Currently, we only accept the network devices. */
-       if (ops->get_device_id(vdpa) != VIRTIO_ID_NET)
-               return -ENOTSUPP;
-
        v = kzalloc(sizeof(*v), GFP_KERNEL | __GFP_RETRY_MAYFAIL);
        if (!v)
                return -ENOMEM;

Reply via email to