lkml.org 
[lkml]   [2019]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 23/32] vhost: scsi: add weight support
    Date
    From: Jason Wang <jasowang@redhat.com>

    commit c1ea02f15ab5efb3e93fc3144d895410bf79fcf2 upstream.

    This patch will check the weight and exit the loop if we exceeds the
    weight. This is useful for preventing scsi kthread from hogging cpu
    which is guest triggerable.

    This addresses CVE-2019-3900.

    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Fixes: 057cbf49a1f0 ("tcm_vhost: Initial merge for vhost level target fabric driver")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    [jwang: backport to 4.19]
    Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/vhost/scsi.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/vhost/scsi.c
    +++ b/drivers/vhost/scsi.c
    @@ -817,7 +817,7 @@ vhost_scsi_handle_vq(struct vhost_scsi *
    u64 tag;
    u32 exp_data_len, data_direction;
    unsigned int out = 0, in = 0;
    - int head, ret, prot_bytes;
    + int head, ret, prot_bytes, c = 0;
    size_t req_size, rsp_size = sizeof(struct virtio_scsi_cmd_resp);
    size_t out_size, in_size;
    u16 lun;
    @@ -836,7 +836,7 @@ vhost_scsi_handle_vq(struct vhost_scsi *

    vhost_disable_notify(&vs->dev, vq);

    - for (;;) {
    + do {
    head = vhost_get_vq_desc(vq, vq->iov,
    ARRAY_SIZE(vq->iov), &out, &in,
    NULL, NULL);
    @@ -1051,7 +1051,7 @@ vhost_scsi_handle_vq(struct vhost_scsi *
    */
    INIT_WORK(&cmd->work, vhost_scsi_submission_work);
    queue_work(vhost_scsi_workqueue, &cmd->work);
    - }
    + } while (likely(!vhost_exceeds_weight(vq, ++c, 0)));
    out:
    mutex_unlock(&vq->mutex);
    }

    \
     
     \ /
      Last update: 2019-08-02 12:10    [W:4.068 / U:0.724 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site