From: Stefano Garzarella <sgarzare@redhat.com>
To: virtualization@lists.linux-foundation.org
Cc: Laurent Vivier <lvivier@redhat.com>,
Max Gurtovoy <mgurtovoy@nvidia.com>,
kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
linux-kernel@vger.kernel.org,
Xie Yongji <xieyongji@bytedance.com>,
Stefan Hajnoczi <stefanha@redhat.com>
Subject: [PATCH v3 09/13] vhost/vdpa: remove vhost_vdpa_config_validate()
Date: Thu, 4 Feb 2021 18:22:26 +0100 [thread overview]
Message-ID: <20210204172230.85853-10-sgarzare@redhat.com> (raw)
In-Reply-To: <20210204172230.85853-1-sgarzare@redhat.com>
get_config() and set_config() callbacks in the 'struct vdpa_config_ops'
usually already validated the inputs. Also now they can return an error,
so we don't need to validate them here anymore.
Let's use the return value of these callbacks and return it in case of
error in vhost_vdpa_get_config() and vhost_vdpa_set_config().
Originally-by: Xie Yongji <xieyongji@bytedance.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
drivers/vhost/vdpa.c | 41 +++++++++++++----------------------------
1 file changed, 13 insertions(+), 28 deletions(-)
diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index ef688c8c0e0e..d61e779000a8 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -185,51 +185,35 @@ 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;
-}
-
static long vhost_vdpa_get_config(struct vhost_vdpa *v,
struct vhost_vdpa_config __user *c)
{
struct vdpa_device *vdpa = v->vdpa;
struct vhost_vdpa_config config;
unsigned long size = offsetof(struct vhost_vdpa_config, buf);
+ long ret;
u8 *buf;
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)
return -ENOMEM;
- vdpa_get_config(vdpa, config.off, buf, config.len);
+ ret = vdpa_get_config(vdpa, config.off, buf, config.len);
+ if (ret)
+ goto out;
if (copy_to_user(c->buf, buf, config.len)) {
- kvfree(buf);
- return -EFAULT;
+ ret = -EFAULT;
+ goto out;
}
+out:
kvfree(buf);
- return 0;
+ return ret;
}
static long vhost_vdpa_set_config(struct vhost_vdpa *v,
@@ -239,21 +223,22 @@ static long vhost_vdpa_set_config(struct vhost_vdpa *v,
const struct vdpa_config_ops *ops = vdpa->config;
struct vhost_vdpa_config config;
unsigned long size = offsetof(struct vhost_vdpa_config, buf);
+ long ret;
u8 *buf;
if (copy_from_user(&config, c, size))
return -EFAULT;
- if (vhost_vdpa_config_validate(v, &config))
+ if (config.len == 0)
return -EINVAL;
buf = vmemdup_user(c->buf, config.len);
if (IS_ERR(buf))
return PTR_ERR(buf);
- ops->set_config(vdpa, config.off, buf, config.len);
+ ret = ops->set_config(vdpa, config.off, buf, config.len);
kvfree(buf);
- return 0;
+ return ret;
}
static long vhost_vdpa_get_features(struct vhost_vdpa *v, u64 __user *featurep)
--
2.29.2
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2021-02-04 17:24 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-04 17:22 [PATCH v3 00/13] vdpa: add vdpa simulator for block device Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 01/13] vdpa_sim: use iova module to allocate IOVA addresses Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 02/13] vringh: add 'iotlb_lock' to synchronize iotlb accesses Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 03/13] vringh: reset kiov 'consumed' field in __vringh_iov() Stefano Garzarella
2021-02-05 3:18 ` Jason Wang
2021-02-04 17:22 ` [PATCH v3 04/13] vringh: explain more about cleaning riov and wiov Stefano Garzarella
2021-02-05 3:18 ` Jason Wang
2021-02-04 17:22 ` [PATCH v3 05/13] vringh: implement vringh_kiov_advance() Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 06/13] vringh: add vringh_kiov_length() helper Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 07/13] vdpa_sim: cleanup kiovs in vdpasim_free() Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 08/13] vdpa: add return value to get_config/set_config callbacks Stefano Garzarella
2021-02-04 22:31 ` kernel test robot
2021-02-04 22:39 ` Stefano Garzarella
2021-02-05 3:20 ` Jason Wang
2021-02-05 8:48 ` Stefano Garzarella
2021-02-05 14:11 ` Michael S. Tsirkin
2021-02-05 14:17 ` Stefano Garzarella
2021-02-04 17:22 ` Stefano Garzarella [this message]
2021-02-05 3:27 ` [PATCH v3 09/13] vhost/vdpa: remove vhost_vdpa_config_validate() Jason Wang
2021-02-05 9:16 ` Stefano Garzarella
2021-02-05 13:32 ` Michael S. Tsirkin
2021-02-05 14:17 ` Stefano Garzarella
2021-02-08 4:13 ` Jason Wang
2021-02-04 17:22 ` [PATCH v3 10/13] vhost/vdpa: Remove the restriction that only supports virtio-net devices Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 11/13] vdpa: add vdpa simulator for block device Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 12/13] vdpa_sim_blk: implement ramdisk behaviour Stefano Garzarella
2021-02-04 17:22 ` [PATCH v3 13/13] vdpa_sim_blk: handle VIRTIO_BLK_T_GET_ID Stefano Garzarella
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=20210204172230.85853-10-sgarzare@redhat.com \
--to=sgarzare@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=mgurtovoy@nvidia.com \
--cc=mst@redhat.com \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=xieyongji@bytedance.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).