summaryrefslogtreecommitdiffstats
path: root/hw/virtio
diff options
context:
space:
mode:
authorStefan Hajnoczi2017-02-22 17:37:33 +0100
committerMichael S. Tsirkin2017-03-02 06:14:27 +0100
commit3cdf847329a9911780372e6d8239839446d09d9f (patch)
tree4141939f3d23e00a7220667e0a060922dce162d1 /hw/virtio
parentvirtio: guard vring access when setting notification (diff)
downloadqemu-3cdf847329a9911780372e6d8239839446d09d9f.tar.gz
qemu-3cdf847329a9911780372e6d8239839446d09d9f.tar.xz
qemu-3cdf847329a9911780372e6d8239839446d09d9f.zip
virtio: invalidate memory in vring_set_avail_event()
Remember to invalidate the avail event field so the memory pages are marked dirty. Cc: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Tested-by: Eric Auger <eric.auger@redhat.com>
Diffstat (limited to 'hw/virtio')
-rw-r--r--hw/virtio/virtio.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index bf8a644677..294c909cce 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -282,6 +282,7 @@ static inline void vring_set_avail_event(VirtQueue *vq, uint16_t val)
caches = atomic_rcu_read(&vq->vring.caches);
pa = offsetof(VRingUsed, ring[vq->vring.num]);
virtio_stw_phys_cached(vq->vdev, &caches->used, pa, val);
+ address_space_cache_invalidate(&caches->used, pa, sizeof(val));
}
void virtio_queue_set_notification(VirtQueue *vq, int enable)