From 29e3a6aebf124a88b26fd49a2dd0a99c38f918aa Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 4 Jul 2019 10:32:07 +0200 Subject: [PATCH 4/4] virtio-gpu: fix unmap in error path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RH-Author: Gerd Hoffmann Message-id: <20190704103207.29158-4-kraxel@redhat.com> Patchwork-id: 89373 O-Subject: [RHEL-8.1.0 qemu-kvm PATCH v2 3/3] virtio-gpu: fix unmap in error path Bugzilla: 1531543 RH-Acked-by: Philippe Mathieu-Daudé RH-Acked-by: Laszlo Ersek RH-Acked-by: Stefan Hajnoczi We land here in case not everything we've asked for could be mapped. So unmap only the bytes which have actually been mapped. Also we didn't access anything, so acces_len can be 0. Reported-by: Laszlo Ersek Signed-off-by: Gerd Hoffmann Reviewed-by: Laszlo Ersek Reviewed-by: Li Qiang Message-id: 20190628072357.31782-1-kraxel@redhat.com (cherry picked from commit a7f85e03b94ffaca75332cddf06426fc85ac611a) Signed-off-by: Miroslav Rezanina --- hw/display/virtio-gpu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 327c2be..07712d0 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1158,9 +1158,9 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque, size_t size, if (res->iov[i].iov_base) { dma_memory_unmap(VIRTIO_DEVICE(g)->dma_as, res->iov[i].iov_base, - res->iov[i].iov_len, + len, DMA_DIRECTION_TO_DEVICE, - res->iov[i].iov_len); + 0); } /* ...and the mappings for previous loop iterations */ res->iov_cnt = i; -- 1.8.3.1