On Tue, Jan 27, 2026 at 04:25:21PM +0100, Johannes Thumshirn wrote:
> When booting a Qemu VM whith KCSAN to debug filesystem races I
> encountered a bunch of KCSAN splats in virtio.
>
> All of them are false positives, as the racy unknown origin is the
> hypervisor.
>
> Alex suggested to annotate the vring structure as racy for KCSAN, but
> the __data_racy annotation turns into "volatile" and as such it cannot
> be used to annotate the whole structure. Annotating every structure
> embedding a pointer to the vring turned out to be way more invasive than
> annotating only the few sites consumers.
Oh wow and I learned Linux has
# define auto __auto_type
which then allows auto in G11:
#define data_race(expr) \
({ \
__kcsan_disable_current(); \
auto __v = (expr); \
__kcsan_enable_current(); \
__v; \
})
> Changes to v1:
> - Annotate the return of more_used_split() as racy so both call sites
> are covered
> - Annotate vring_avail_event() as racy so we can condense two patches
> into one.
Acked-by: Michael S. Tsirkin <[email protected]>
I will pick this up.
> Link to v1:
> https://lore.kernel.org/virtualization/[email protected]/
>
> Johannes Thumshirn (2):
> virtio: silence KCSAN warning in virtqueue_get_buf_ctx_split
> virtio: silence KCSAN warning in virtqueue_kick_prepare
>
> drivers/virtio/virtio_ring.c | 4 ++--
> include/uapi/linux/virtio_ring.h | 2 +-
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> --
> 2.52.0