lkml.org 
[lkml]   [2019]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] virtio/virtio_ring: Fix the dma_max_mapping_size call
    Date
    Do not call dma_max_mapping_size for devices that have no DMA
    mask set, otherwise we can hit a NULL pointer dereference.

    This occurs when a virtio-blk-pci device is protected with
    a virtual IOMMU.

    Fixes: e6d6dd6c875e ("virtio: Introduce virtio_max_dma_size()")
    Signed-off-by: Eric Auger <eric.auger@redhat.com>
    Suggested-by: Christoph Hellwig <hch@lst.de>
    ---
    drivers/virtio/virtio_ring.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
    index c8be1c4f5b55..37c143971211 100644
    --- a/drivers/virtio/virtio_ring.c
    +++ b/drivers/virtio/virtio_ring.c
    @@ -262,7 +262,7 @@ size_t virtio_max_dma_size(struct virtio_device *vdev)
    {
    size_t max_segment_size = SIZE_MAX;

    - if (vring_use_dma_api(vdev))
    + if (vring_use_dma_api(vdev) && vdev->dev.dma_mask)
    max_segment_size = dma_max_mapping_size(&vdev->dev);

    return max_segment_size;
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-07-22 16:56    [W:3.072 / U:0.764 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site