https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/commit/?id=5b44859765fc10920cfde68f8e327e6c92fc23ee From 5b44859765fc10920cfde68f8e327e6c92fc23ee Mon Sep 17 00:00:00 2001 From: Emil Thorsoe Date: Wed, 6 May 2026 22:11:51 +0300 Subject: libtraceevent utest: Read btf file in utest if mmap fails When mmap of the btf file fails in utest, fall back to malloc and read. This mmap fails with ENODEV on i686 nix build on nixos-unstable. Link: https://lore.kernel.org/d6e07cd6-cb78-4119-a048-920ca58b4830@tuxera.com Signed-off-by: Emil Thorsoe Signed-off-by: Steven Rostedt --- utest/traceevent-utest.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/utest/traceevent-utest.c b/utest/traceevent-utest.c index b62411c..7d09bf2 100644 --- a/utest/traceevent-utest.c +++ b/utest/traceevent-utest.c @@ -388,6 +388,7 @@ static void test_btf_read(void) struct stat st; void *buf; int fd, nr = 6; + bool malloced = false; fd = open("/sys/kernel/btf/vmlinux", O_RDONLY); if (fd < 0) { @@ -397,11 +398,23 @@ static void test_btf_read(void) CU_TEST(fstat(fd, &st) == 0); buf = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); - CU_TEST(buf != MAP_FAILED); - + if (buf == MAP_FAILED) { + malloced = true; + buf = malloc(st.st_size); + if (buf == NULL) { + printf("[FAILED TO ALLOCATE MEMORY FOR BTF FILE CONTENTS] ..."); + close(fd); + return; + } + CU_TEST(read(fd, buf, st.st_size) == st.st_size); + } CU_TEST(tep_load_btf(test_tep, buf, st.st_size) == 0); - munmap(buf, st.st_size); + if (malloced) { + free(buf); + } else { + munmap(buf, st.st_size); + } close(fd); trace_seq_init(s); -- cgit 1.3-korg