vhost: generalize adding used elem [Linux 5.3]

This Linux kernel change "vhost: generalize adding used elem" is included in the Linux 5.3 release. This change is authored by Jason Wang <jasowang [at] redhat.com> on Fri May 24 04:12:13 2019 -0400. The commit for this change in Linux stable tree is 1ab5d13 (patch).

vhost: generalize adding used elem

Use one generic vhost_copy_to_user() instead of two dedicated
accessor. This will simplify the conversion to fine grain
accessors. About 2% improvement of PPS were seen during vitio-user
txonly test.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>

There are 11 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 drivers/vhost/vhost.c | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 3f3eac4..3fb5801 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -2273,16 +2273,7 @@ static int __vhost_add_used_n(struct vhost_virtqueue *vq,

    start = vq->last_used_idx & (vq->num - 1);
    used = vq->used->ring + start;
-   if (count == 1) {
-       if (vhost_put_user(vq, heads[0].id, &used->id)) {
-           vq_err(vq, "Failed to write used id");
-           return -EFAULT;
-       }
-       if (vhost_put_user(vq, heads[0].len, &used->len)) {
-           vq_err(vq, "Failed to write used len");
-           return -EFAULT;
-       }
-   } else if (vhost_copy_to_user(vq, used, heads, count * sizeof *used)) {
+   if (vhost_copy_to_user(vq, used, heads, count * sizeof *used)) {
        vq_err(vq, "Failed to write used");
        return -EFAULT;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *