From b7f66626c2381d2c2bd55d701b55c25d74e5eb71 Mon Sep 17 00:00:00 2001 From: Piotr Tworek Date: Wed, 13 Jan 2021 21:43:40 +0100 Subject: [PATCH] virtio: Make avail and used ring pointers volatile The contents of those descriptor rings can be modified by the device. Mark them as volatile so the compiler does not make any assumptions about them. Issue #4264 --- repos/os/include/virtio/queue.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/os/include/virtio/queue.h b/repos/os/include/virtio/queue.h index 397996884e..caa9a50049 100644 --- a/repos/os/include/virtio/queue.h +++ b/repos/os/include/virtio/queue.h @@ -121,8 +121,8 @@ class Virtio::Queue Genode::uint16_t const _buffer_size; Genode::Attached_ram_dataspace _ram_ds; Descriptor *_desc_table = nullptr; - Avail *_avail = nullptr; - Used *_used = nullptr; + Avail volatile *_avail = nullptr; + Used volatile *_used = nullptr; Genode::addr_t _buffer_phys_base = 0; Genode::addr_t _buffer_local_base = 0; Genode::uint16_t _last_used_idx = 0;