selftests/bpf: test_loader.c:get_current_arch() should not return 0
authorEduard Zingerman <eddyz87@gmail.com>
Fri, 23 Aug 2024 08:06:42 +0000 (01:06 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 23 Aug 2024 14:29:02 +0000 (07:29 -0700)
At the moment, when test_loader.c:get_current_arch() can't determine
the arch, it returns 0. The arch check in run_subtest() looks as
follows:

if ((get_current_arch() & spec->arch_mask) == 0) {
test__skip();
return;
}

Which means that all test_loader based tests would be skipped if arch
could not be determined. get_current_arch() recognizes x86_64, arm64
and riscv64. Which means that CI skips test_loader tests for s390.

Fix this by making sure that get_current_arch() always returns
non-zero value. In combination with default spec->arch_mask == -1 this
should cover all possibilities.

Fixes: f406026fefa7 ("selftests/bpf: by default use arch mask allowing all archs")
Fixes: 7d743e4c759c ("selftests/bpf: __jited test tag to check disassembly after jit")
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20240823080644.263943-2-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/test_loader.c

index 2ca9b73..4223cff 100644 (file)
@@ -336,9 +336,10 @@ static const char *skip_dynamic_pfx(const char *s, const char *pfx)
 }
 
 enum arch {
-       ARCH_X86_64     = 0x1,
-       ARCH_ARM64      = 0x2,
-       ARCH_RISCV64    = 0x4,
+       ARCH_UNKNOWN    = 0x1,
+       ARCH_X86_64     = 0x2,
+       ARCH_ARM64      = 0x4,
+       ARCH_RISCV64    = 0x8,
 };
 
 static int get_current_arch(void)
@@ -350,7 +351,7 @@ static int get_current_arch(void)
 #elif defined(__riscv) && __riscv_xlen == 64
        return ARCH_RISCV64;
 #endif
-       return 0;
+       return ARCH_UNKNOWN;
 }
 
 /* Uses btf_decl_tag attributes to describe the expected test