aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2026-01-13 14:54:14 +1100
committerStefano Brivio <sbrivio@redhat.com>2026-01-14 01:07:51 +0100
commitfa765d54b048127c77e0699843f4008b026a0e9f (patch)
tree6b3a722313a6c75fd5553767e7c33b5deba46f36
parent4af3d83170fd227b177f9861d93391e3d2008d34 (diff)
downloadpasst-fa765d54b048127c77e0699843f4008b026a0e9f.tar
passt-fa765d54b048127c77e0699843f4008b026a0e9f.tar.gz
passt-fa765d54b048127c77e0699843f4008b026a0e9f.tar.bz2
passt-fa765d54b048127c77e0699843f4008b026a0e9f.tar.lz
passt-fa765d54b048127c77e0699843f4008b026a0e9f.tar.xz
passt-fa765d54b048127c77e0699843f4008b026a0e9f.tar.zst
passt-fa765d54b048127c77e0699843f4008b026a0e9f.zip
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 <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r--epoll_ctl.h4
1 files 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");