[PATCH] kbuffer: fix endianness flags for big-endian host

Bastien Curutchet <[email protected]> Tue, 04 Nov 2025 09:45:00 +0100
Newsgroups org.kernel.vger.linux-trace-devel
Message-ID <[email protected]>
When KBUFFER_ENDIAN_SAME_AS_HOST is set on a big-endian host, the
KBUFFER_FL_BIG_ENDIAN flag is added to the local flags variable instead
of the kbuf->flags. Since the local flags variable has already been
copied to kbuf->flags at that time, the KBUFFER_FL_BIG_ENDIAN flag is
lost when we leave the function.

Add KBUFFER_FL_BIG_ENDIAN to the kbuf->flags when
KBUFFER_ENDIAN_SAME_AS_HOST is used on a big-endian host.

Signed-off-by: Bastien Curutchet <[email protected]>
Fixes: 5f2aa8497c5b ("libtraceevent kbuffer: Add SAME_AS_HOST for endian and size")
---
 src/kbuffer-parse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/kbuffer-parse.c b/src/kbuffer-parse.c
index 71291adf0860b8392e6cfa0b0640c6472def422c..232d1688934a946e19f52886c2d25e4c73637b4c 100644
--- a/src/kbuffer-parse.c
+++ b/src/kbuffer-parse.c
@@ -247,7 +247,7 @@ kbuffer_alloc(enum kbuffer_long_size size, enum kbuffer_endian endian)
 
 	if (host_is_bigendian()) {
 		if (endian == KBUFFER_ENDIAN_SAME_AS_HOST)
-			flags |= KBUFFER_FL_BIG_ENDIAN;
+			kbuf->flags |= KBUFFER_FL_BIG_ENDIAN;
 		kbuf->flags |= KBUFFER_FL_HOST_BIG_ENDIAN;
 	}
 

---
base-commit: b3f5849527ae226b88342ef80fc42c66ab206f99
change-id: 20251028-fix-parse-7395a8571b72

Best regards,
-- 
Bastien Curutchet <[email protected]>