Blame SOURCES/kvm-vdpa-Export-vhost_vdpa_dma_map-and-unmap-calls.patch

29b115
From 3a5d325fcb2958318262efac31d5fd25fb062523 Mon Sep 17 00:00:00 2001
29b115
From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= <eperezma@redhat.com>
29b115
Date: Thu, 21 Jul 2022 15:38:55 +0200
29b115
Subject: [PATCH 21/32] vdpa: Export vhost_vdpa_dma_map and unmap calls
29b115
MIME-Version: 1.0
29b115
Content-Type: text/plain; charset=UTF-8
29b115
Content-Transfer-Encoding: 8bit
29b115
29b115
RH-Author: Eugenio Pérez <eperezma@redhat.com>
29b115
RH-MergeRequest: 108: Net Control Virtqueue shadow Support
29b115
RH-Commit: [21/27] 97e7a583bbd3c12a0786d53132812ec41702c190 (eperezmartin/qemu-kvm)
29b115
RH-Bugzilla: 1939363
29b115
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
29b115
RH-Acked-by: Cindy Lu <lulu@redhat.com>
29b115
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
29b115
29b115
Bugzilla: https://bugzilla.redhat.com/1939363
29b115
29b115
Upstream Status: git://git.qemu.org/qemu.git
29b115
29b115
commit 463ba1e3b8cf080812895c5f26d95d8d7db2e692
29b115
Author: Eugenio Pérez <eperezma@redhat.com>
29b115
Date:   Wed Jul 20 08:59:40 2022 +0200
29b115
29b115
    vdpa: Export vhost_vdpa_dma_map and unmap calls
29b115
29b115
    Shadow CVQ will copy buffers on qemu VA, so we avoid TOCTOU attacks from
29b115
    the guest that could set a different state in qemu device model and vdpa
29b115
    device.
29b115
29b115
    To do so, it needs to be able to map these new buffers to the device.
29b115
29b115
    Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
29b115
    Acked-by: Jason Wang <jasowang@redhat.com>
29b115
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
29b115
    Signed-off-by: Jason Wang <jasowang@redhat.com>
29b115
29b115
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
29b115
---
29b115
 hw/virtio/vhost-vdpa.c         | 7 +++----
29b115
 include/hw/virtio/vhost-vdpa.h | 4 ++++
29b115
 2 files changed, 7 insertions(+), 4 deletions(-)
29b115
29b115
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
29b115
index 28df57b12e..14b02fe079 100644
29b115
--- a/hw/virtio/vhost-vdpa.c
29b115
+++ b/hw/virtio/vhost-vdpa.c
29b115
@@ -71,8 +71,8 @@ static bool vhost_vdpa_listener_skipped_section(MemoryRegionSection *section,
29b115
     return false;
29b115
 }
29b115
 
29b115
-static int vhost_vdpa_dma_map(struct vhost_vdpa *v, hwaddr iova, hwaddr size,
29b115
-                              void *vaddr, bool readonly)
29b115
+int vhost_vdpa_dma_map(struct vhost_vdpa *v, hwaddr iova, hwaddr size,
29b115
+                       void *vaddr, bool readonly)
29b115
 {
29b115
     struct vhost_msg_v2 msg = {};
29b115
     int fd = v->device_fd;
29b115
@@ -97,8 +97,7 @@ static int vhost_vdpa_dma_map(struct vhost_vdpa *v, hwaddr iova, hwaddr size,
29b115
     return ret;
29b115
 }
29b115
 
29b115
-static int vhost_vdpa_dma_unmap(struct vhost_vdpa *v, hwaddr iova,
29b115
-                                hwaddr size)
29b115
+int vhost_vdpa_dma_unmap(struct vhost_vdpa *v, hwaddr iova, hwaddr size)
29b115
 {
29b115
     struct vhost_msg_v2 msg = {};
29b115
     int fd = v->device_fd;
29b115
diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h
29b115
index a29dbb3f53..7214eb47dc 100644
29b115
--- a/include/hw/virtio/vhost-vdpa.h
29b115
+++ b/include/hw/virtio/vhost-vdpa.h
29b115
@@ -39,4 +39,8 @@ typedef struct vhost_vdpa {
29b115
     VhostVDPAHostNotifier notifier[VIRTIO_QUEUE_MAX];
29b115
 } VhostVDPA;
29b115
 
29b115
+int vhost_vdpa_dma_map(struct vhost_vdpa *v, hwaddr iova, hwaddr size,
29b115
+                       void *vaddr, bool readonly);
29b115
+int vhost_vdpa_dma_unmap(struct vhost_vdpa *v, hwaddr iova, hwaddr size);
29b115
+
29b115
 #endif
29b115
-- 
29b115
2.31.1
29b115