Skip to content

Commit a32f6f1

Browse files
mannkafaiAlexei Starovoitov
authored andcommitted
selftests/bpf: Add selftest for attaching tracing programs to functions in deny list
The result: $ tools/testing/selftests/bpf/test_progs -t tracing_failure/tracing_deny #468/3 tracing_failure/tracing_deny:OK #468 tracing_failure:OK Summary: 1/1 PASSED, 0 SKIPPED, 0 FAILED Signed-off-by: KaFai Wan <[email protected]> Acked-by: Yonghong Song <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Alexei Starovoitov <[email protected]>
1 parent 863aab3 commit a32f6f1

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

tools/testing/selftests/bpf/prog_tests/tracing_failure.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,43 @@ static void test_bpf_spin_lock(bool is_spin_lock)
2828
tracing_failure__destroy(skel);
2929
}
3030

31+
static void test_tracing_deny(void)
32+
{
33+
struct tracing_failure *skel;
34+
char log_buf[256];
35+
int btf_id, err;
36+
37+
/* __rcu_read_lock depends on CONFIG_PREEMPT_RCU */
38+
btf_id = libbpf_find_vmlinux_btf_id("__rcu_read_lock", BPF_TRACE_FENTRY);
39+
if (btf_id <= 0) {
40+
test__skip();
41+
return;
42+
}
43+
44+
skel = tracing_failure__open();
45+
if (!ASSERT_OK_PTR(skel, "tracing_failure__open"))
46+
return;
47+
48+
bpf_program__set_autoload(skel->progs.tracing_deny, true);
49+
bpf_program__set_log_buf(skel->progs.tracing_deny, log_buf, sizeof(log_buf));
50+
51+
err = tracing_failure__load(skel);
52+
if (!ASSERT_ERR(err, "tracing_failure__load"))
53+
goto out;
54+
55+
ASSERT_HAS_SUBSTR(log_buf,
56+
"Attaching tracing programs to function '__rcu_read_lock' is rejected.",
57+
"log_buf");
58+
out:
59+
tracing_failure__destroy(skel);
60+
}
61+
3162
void test_tracing_failure(void)
3263
{
3364
if (test__start_subtest("bpf_spin_lock"))
3465
test_bpf_spin_lock(true);
3566
if (test__start_subtest("bpf_spin_unlock"))
3667
test_bpf_spin_lock(false);
68+
if (test__start_subtest("tracing_deny"))
69+
test_tracing_deny();
3770
}

tools/testing/selftests/bpf/progs/tracing_failure.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,9 @@ int BPF_PROG(test_spin_unlock, struct bpf_spin_lock *lock)
1818
{
1919
return 0;
2020
}
21+
22+
SEC("?fentry/__rcu_read_lock")
23+
int BPF_PROG(tracing_deny)
24+
{
25+
return 0;
26+
}

0 commit comments

Comments
 (0)