From fa765d54b048127c77e0699843f4008b026a0e9f Mon Sep 17 00:00:00 2001 From: David Gibson Date: Tue, 13 Jan 2026 14:54:14 +1100 Subject: epoll_ctl: Move u64 variant first for safer initialisation cppcheck-2.19.1 pointed out that an initialiser like: union epoll_ref foo = { 0 }; doesn't necessarily zero the whole union, because the first variant listed may not be the full length. I don't think this is actually broken in practice, but I'm not 100% certain about that. In any case, make it more clearly correct, and stop cppcheck complaining by moving the @u64 variant to be the first one. Signed-off-by: David Gibson Signed-off-by: Stefano Brivio --- epoll_ctl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epoll_ctl.h b/epoll_ctl.h index 3f802e7..2c103cd 100644 --- a/epoll_ctl.h +++ b/epoll_ctl.h @@ -17,6 +17,7 @@ /** * union epoll_ref - Breakdown of reference for epoll fd bookkeeping + * @u64: Opaque reference for epoll_ctl() and epoll_wait() * @type: Type of fd (tells us what to do with events) * @fd: File descriptor number (implies < 2^24 total descriptors) * @flow: Index of the flow this fd is linked to @@ -25,9 +26,9 @@ * @data: Data handled by protocol handlers * @nsdir_fd: netns dirfd for fallback timer checking if namespace is gone * @queue: vhost-user queue index for this fd - * @u64: Opaque reference for epoll_ctl() and epoll_wait() */ union epoll_ref { + uint64_t u64; struct { enum epoll_type type:8; int32_t fd:FD_REF_BITS; @@ -40,7 +41,6 @@ union epoll_ref { int queue; }; }; - uint64_t u64; }; static_assert(sizeof(union epoll_ref) <= sizeof(union epoll_data), "epoll_ref must have same size as epoll_data"); -- cgit v1.2.3