lkml.org 
[lkml]   [2019]   [Nov]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.3 25/95] virtio_ring: fix return code on DMA mapping fails
    Date
    From: Halil Pasic <pasic@linux.ibm.com>

    commit f7728002c1c7bfa787b276a31c3ef458739b8e7c upstream.

    Commit 780bc7903a32 ("virtio_ring: Support DMA APIs") makes
    virtqueue_add() return -EIO when we fail to map our I/O buffers. This is
    a very realistic scenario for guests with encrypted memory, as swiotlb
    may run out of space, depending on it's size and the I/O load.

    The virtio-blk driver interprets -EIO form virtqueue_add() as an IO
    error, despite the fact that swiotlb full is in absence of bugs a
    recoverable condition.

    Let us change the return code to -ENOMEM, and make the block layer
    recover form these failures when virtio-blk encounters the condition
    described above.

    Cc: stable@vger.kernel.org
    Fixes: 780bc7903a32 ("virtio_ring: Support DMA APIs")
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Tested-by: Michael Mueller <mimu@linux.ibm.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/virtio/virtio_ring.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/virtio/virtio_ring.c
    +++ b/drivers/virtio/virtio_ring.c
    @@ -583,7 +583,7 @@ unmap_release:
    kfree(desc);

    END_USE(vq);
    - return -EIO;
    + return -ENOMEM;
    }

    static bool virtqueue_kick_prepare_split(struct virtqueue *_vq)
    @@ -1085,7 +1085,7 @@ unmap_release:
    kfree(desc);

    END_USE(vq);
    - return -EIO;
    + return -ENOMEM;
    }

    static inline int virtqueue_add_packed(struct virtqueue *_vq,

    \
     
     \ /
      Last update: 2019-11-27 22:09    [W:4.771 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site