586cba
From edde0b6a805085255bccc0ccdc3b9b6f81cef37b Mon Sep 17 00:00:00 2001
586cba
From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= <eperezma@redhat.com>
586cba
Date: Tue, 23 Aug 2022 20:20:02 +0200
586cba
Subject: [PATCH 03/23] vdpa: Skip the maps not in the iova tree
586cba
MIME-Version: 1.0
586cba
Content-Type: text/plain; charset=UTF-8
586cba
Content-Transfer-Encoding: 8bit
586cba
586cba
RH-Author: Eugenio Pérez <eperezma@redhat.com>
586cba
RH-MergeRequest: 116: vdpa: Restore device state on destination
586cba
RH-Bugzilla: 2114060
586cba
RH-Acked-by: Cindy Lu <lulu@redhat.com>
586cba
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
586cba
RH-Commit: [2/21] 73acd16375a17cdf4c58830386541dd3a1b18bf7 (eperezmartin/qemu-kvm)
586cba
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2114060
586cba
Upstream status: git@github.com:jasowang/qemu.git net-next
586cba
586cba
Next patch will skip the registering of dma maps that the vdpa device
586cba
rejects in the iova tree. We need to consider that here or we cause a
586cba
SIGSEGV accessing result.
586cba
586cba
Reported-by: Lei Yang <leiyang@redhat.com>
586cba
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
586cba
Acked-by: Jason Wang <jasowang@redhat.com>
586cba
Signed-off-by: Jason Wang <jasowang@redhat.com>
586cba
(cherry picked from commit a92ca0ffee5858636432a6059eb2790df1c9c77f)
586cba
---
586cba
 hw/virtio/vhost-vdpa.c | 4 ++++
586cba
 1 file changed, 4 insertions(+)
586cba
586cba
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
586cba
index 96334ab5b6..aa7765c6bc 100644
586cba
--- a/hw/virtio/vhost-vdpa.c
586cba
+++ b/hw/virtio/vhost-vdpa.c
586cba
@@ -287,6 +287,10 @@ static void vhost_vdpa_listener_region_del(MemoryListener *listener,
586cba
         };
586cba
 
586cba
         result = vhost_iova_tree_find_iova(v->iova_tree, &mem_region);
586cba
+        if (!result) {
586cba
+            /* The memory listener map wasn't mapped */
586cba
+            return;
586cba
+        }
586cba
         iova = result->iova;
586cba
         vhost_iova_tree_remove(v->iova_tree, result);
586cba
     }
586cba
-- 
586cba
2.31.1
586cba