virtio: use virtio accessor to access packed event
commitd152cdd6f6fad381e804c8185f0ba938030ccac9
authorJason Wang <jasowang@redhat.com>
Thu, 11 Nov 2021 06:38:54 +0000 (11 14:38 +0800)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 15 Nov 2021 14:44:46 +0000 (15 09:44 -0500)
tree709d58d6a95c3d99886ddf805752e841b3fafddb
parentf463e761a41ee71e59892121e1c74d9c25c985d2
virtio: use virtio accessor to access packed event

We used to access packed descriptor event and off_wrap via
address_space_{write|read}_cached(). When we hit the cache, memcpy()
is used which is not atomic which may lead a wrong value to be read or
wrote.

This patch fixes this by switching to use
virito_{stw|lduw}_phys_cached() to make sure the access is atomic.

Fixes: 683f7665679c1 ("virtio: event suppression support for packed ring")
Cc: qemu-stable@nongnu.org
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20211111063854.29060-2-jasowang@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio/virtio.c