hw/display/virtio-gpu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
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 <lersek@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
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 2b0f66b1d68d..475a018c027c 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -1048,9 +1048,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;
--
2.18.1
On 06/28/19 09:23, Gerd Hoffmann wrote:
> 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.
s/acces_len/access_len/
With that:
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Thank you!
Laszlo
>
> Reported-by: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
> 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 2b0f66b1d68d..475a018c027c 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1048,9 +1048,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;
>
Gerd Hoffmann <kraxel@redhat.com> 于2019年6月28日周五 下午3:24写道:
> 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 <lersek@redhat.com>
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
>
It is reasonable, so
Reviewed-by: Li Qiang <liq3ea@gmail.com>
btw: Does it break something before this patch?
AFAICS, the 'len' is not used for the unmap, only the 'access_len' is used.
Thanks,
Li Qiang
> ---
> 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 2b0f66b1d68d..475a018c027c 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1048,9 +1048,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;
> --
> 2.18.1
>
>
>
© 2016 - 2025 Red Hat, Inc.