On Wed Jul 15, 2026 at 11:32 AM EDT, Leon Hwang wrote:
> 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 <[email protected]>

Reviewed-by: Emil Tsalapatis <[email protected]>

> ---
>  .../bpf/prog_tests/global_data_init.c         |  6 +++++
>  .../bpf/progs/test_global_percpu_data.c       | 23 +++++++++++++++++++
>  2 files changed, 29 insertions(+)
>
> 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 d4405646847a..598b7dde6581 100644
> --- a/tools/testing/selftests/bpf/prog_tests/global_data_init.c
> +++ b/tools/testing/selftests/bpf/prog_tests/global_data_init.c
> @@ -278,6 +278,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)) {
> @@ -293,4 +298,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 54380dfb11a5..b852a0b07508 100644
> --- a/tools/testing/selftests/bpf/progs/test_global_percpu_data.c
> +++ b/tools/testing/selftests/bpf/progs/test_global_percpu_data.c
> @@ -30,4 +30,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";


Reply via email to