]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/bpf: fix test_spin_lock_fail.c's global vars usage
authorAndrii Nakryiko <andrii@kernel.org>
Wed, 23 Oct 2024 04:39:06 +0000 (21:39 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Thu, 24 Oct 2024 05:15:09 +0000 (22:15 -0700)
Global variables of special types (like `struct bpf_spin_lock`) make
underlying ARRAY maps non-mmapable. To make this work with libbpf's
mmaping logic, application is expected to declare such special variables
as static, so libbpf doesn't even attempt to mmap() such ARRAYs.

test_spin_lock_fail.c didn't follow this rule, but given it relied on
this test to trigger failures, this went unnoticed, as we never got to
the step of mmap()'ing these ARRAY maps.

It is fragile and relies on specific sequence of libbpf steps, which are
an internal implementation details.

Fix the test by marking lockA and lockB as static.

Fixes: c48748aea4f8 ("selftests/bpf: Add failure test cases for spin lock pairing")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20241023043908.3834423-2-andrii@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/test_spin_lock_fail.c

index 43f40c4fe241ac8bd8faa6a521cdb130b62a1852..1c8b678e2e9a397786bb02d3de559b3ae50205cf 100644 (file)
@@ -28,8 +28,8 @@ struct {
        },
 };
 
-SEC(".data.A") struct bpf_spin_lock lockA;
-SEC(".data.B") struct bpf_spin_lock lockB;
+static struct bpf_spin_lock lockA SEC(".data.A");
+static struct bpf_spin_lock lockB SEC(".data.B");
 
 SEC("?tc")
 int lock_id_kptr_preserve(void *ctx)