diff options
| author | Leon Hwang <leon.hwang@linux.dev> | 2026-08-13 23:23:22 +0800 |
|---|---|---|
| committer | Andrii Nakryiko <andrii@kernel.org> | 2026-08-13 10:27:40 -0700 |
| commit | 1ed2294b31fc9c403ee2bfbd5920d1b03de969e6 (patch) | |
| tree | 7bd95fe7b40cab928e8b88544299f425abcc572b /tools | |
| parent | 3993d5beef61ca9234c5aa11adff552b8b9f133f (diff) | |
selftests/bpf: Test verifier log for global percpu data
Add two tests to verify the verifier log
"R%d points to percpu_array map which cannot be used as const string\n".
Signed-off-by: Leon Hwang <leon.hwang@linux.dev>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Reviewed-by: Emil Tsalapatis <emil@etsalapatis.com>
Link: https://lore.kernel.org/bpf/20260813152324.97937-10-leon.hwang@linux.dev
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/testing/selftests/bpf/prog_tests/global_data_init.c | 6 | ||||
| -rw-r--r-- | tools/testing/selftests/bpf/progs/test_global_percpu_data.c | 23 |
2 files changed, 29 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/prog_tests/global_data_init.c b/tools/testing/selftests/bpf/prog_tests/global_data_init.c index 9688b417a90b..d308ca3b3045 100644 --- a/tools/testing/selftests/bpf/prog_tests/global_data_init.c +++ b/tools/testing/selftests/bpf/prog_tests/global_data_init.c @@ -322,6 +322,11 @@ static void test_global_percpu_data_rdonly_direct_write(void) close(map_fd); } +static void test_global_percpu_data_verifier_log(void) +{ + RUN_TESTS(test_global_percpu_data); +} + void test_global_percpu_data(void) { if (!feat_supported(NULL, FEAT_PERCPU_DATA)) { @@ -337,4 +342,5 @@ void test_global_percpu_data(void) test_global_percpu_data_rdonly_direct_read(); if (test__start_subtest("rdonly_direct_write")) test_global_percpu_data_rdonly_direct_write(); + test_global_percpu_data_verifier_log(); } diff --git a/tools/testing/selftests/bpf/progs/test_global_percpu_data.c b/tools/testing/selftests/bpf/progs/test_global_percpu_data.c index 416841cd3569..d086e9417f9f 100644 --- a/tools/testing/selftests/bpf/progs/test_global_percpu_data.c +++ b/tools/testing/selftests/bpf/progs/test_global_percpu_data.c @@ -38,4 +38,27 @@ int update_percpu_data(void *ctx) return 0; } +static const char fmt[] SEC(".percpu.fmt") = "data %d\n"; + +SEC("?kprobe") +__failure __msg("R{{[0-9]+}} points to percpu_array map which cannot be used as const string") +int verifier_strncmp(void *ctx) +{ + return bpf_strncmp("test", 5, fmt); +} + +SEC("?kprobe") +__failure __msg("R{{[0-9]+}} points to percpu_array map which cannot be used as const string") +int verifier_snprintf(void *ctx) +{ + u64 args[] = { data }; + char buf[128]; + int len; + + len = bpf_snprintf(buf, sizeof(buf), fmt, args, sizeof(args)); + if (len > 0) + bpf_printk("snprintf: %s\n", buf); + return 0; +} + char _license[] SEC("license") = "GPL"; |
