summary refs log tree commit diff stats
path: root/hw/virtio/vhost-shadow-virtqueue.h
diff options
context:
space:
mode:
authorEugenio Pérez <eperezma@redhat.com>2022-05-12 19:57:42 +0200
committerMichael S. Tsirkin <mst@redhat.com>2022-05-13 07:57:26 -0400
commit495fe3a78749c39c0e772c4e1a55d6cb8a7e5292 (patch)
tree6ef58d337e502c44d1d2c44b2450b913ebd6eaf3 /hw/virtio/vhost-shadow-virtqueue.h
parentaa69abe6e8b0f2dbc3022359a8947fa37bf988b9 (diff)
downloadfocaccia-qemu-495fe3a78749c39c0e772c4e1a55d6cb8a7e5292.tar.gz
focaccia-qemu-495fe3a78749c39c0e772c4e1a55d6cb8a7e5292.zip
vhost: Track descriptor chain in private at SVQ
The device could have access to modify them, and it definitely have
access when we implement packed vq. Harden SVQ maintaining a private
copy of the descriptor chain. Other fields like buffer addresses are
already maintained sepparatedly.

Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Message-Id: <20220512175747.142058-2-eperezma@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/virtio/vhost-shadow-virtqueue.h')
-rw-r--r--hw/virtio/vhost-shadow-virtqueue.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h
index e5e24c536d..c132c994e9 100644
--- a/hw/virtio/vhost-shadow-virtqueue.h
+++ b/hw/virtio/vhost-shadow-virtqueue.h
@@ -53,6 +53,12 @@ typedef struct VhostShadowVirtqueue {
     /* Next VirtQueue element that guest made available */
     VirtQueueElement *next_guest_avail_elem;
 
+    /*
+     * Backup next field for each descriptor so we can recover securely, not
+     * needing to trust the device access.
+     */
+    uint16_t *desc_next;
+
     /* Next head to expose to the device */
     uint16_t shadow_avail_idx;