lkml.org 
[lkml]   [2018]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 23/91] virtio_console: dont tie bufs to a vq
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Michael S. Tsirkin <mst@redhat.com>

    commit 2855b33514d290c51d52d94e25d3ef942cd4d578 upstream.

    an allocated buffer doesn't need to be tied to a vq -
    only vq->vdev is ever used. Pass the function the
    just what it needs - the vdev.

    Cc: stable@vger.kernel.org
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/char/virtio_console.c | 14 +++++++-------
    1 file changed, 7 insertions(+), 7 deletions(-)

    --- a/drivers/char/virtio_console.c
    +++ b/drivers/char/virtio_console.c
    @@ -422,7 +422,7 @@ static void reclaim_dma_bufs(void)
    }
    }

    -static struct port_buffer *alloc_buf(struct virtqueue *vq, size_t buf_size,
    +static struct port_buffer *alloc_buf(struct virtio_device *vdev, size_t buf_size,
    int pages)
    {
    struct port_buffer *buf;
    @@ -445,16 +445,16 @@ static struct port_buffer *alloc_buf(str
    return buf;
    }

    - if (is_rproc_serial(vq->vdev)) {
    + if (is_rproc_serial(vdev)) {
    /*
    * Allocate DMA memory from ancestor. When a virtio
    * device is created by remoteproc, the DMA memory is
    * associated with the grandparent device:
    * vdev => rproc => platform-dev.
    */
    - if (!vq->vdev->dev.parent || !vq->vdev->dev.parent->parent)
    + if (!vdev->dev.parent || !vdev->dev.parent->parent)
    goto free_buf;
    - buf->dev = vq->vdev->dev.parent->parent;
    + buf->dev = vdev->dev.parent->parent;

    /* Increase device refcnt to avoid freeing it */
    get_device(buf->dev);
    @@ -838,7 +838,7 @@ static ssize_t port_fops_write(struct fi

    count = min((size_t)(32 * 1024), count);

    - buf = alloc_buf(port->out_vq, count, 0);
    + buf = alloc_buf(port->portdev->vdev, count, 0);
    if (!buf)
    return -ENOMEM;

    @@ -957,7 +957,7 @@ static ssize_t port_fops_splice_write(st
    if (ret < 0)
    goto error_out;

    - buf = alloc_buf(port->out_vq, 0, pipe->nrbufs);
    + buf = alloc_buf(port->portdev->vdev, 0, pipe->nrbufs);
    if (!buf) {
    ret = -ENOMEM;
    goto error_out;
    @@ -1374,7 +1374,7 @@ static unsigned int fill_queue(struct vi

    nr_added_bufs = 0;
    do {
    - buf = alloc_buf(vq, PAGE_SIZE, 0);
    + buf = alloc_buf(vq->vdev, PAGE_SIZE, 0);
    if (!buf)
    break;


    \
     
     \ /
      Last update: 2018-04-30 22:15    [W:3.688 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site