[PATCH bpf-next 2/2] selftests/bpf: Add test to access const void pointer argument in tracing program

KaFai Wan posted 2 patches 10 months ago
There is a newer version of this series
[PATCH bpf-next 2/2] selftests/bpf: Add test to access const void pointer argument in tracing program
Posted by KaFai Wan 10 months ago
Adding verifier test for accessing const void pointer argument in
tracing programs.

The test program loads 2nd argument of kfree tp_btf which is
const void pointer and checks that verifier allows that.

Signed-off-by: KaFai Wan <kafai.wan@hotmail.com>
---
 .../selftests/bpf/progs/verifier_btf_ctx_access.c        | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
index 28b939572cda..a6cec7f73dcd 100644
--- a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
+++ b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
@@ -65,4 +65,13 @@ __naked void ctx_access_u32_pointer_reject_8(void)
 "	::: __clobber_all);
 }
 
+SEC("tp_btf/kfree")
+__description("btf_ctx_access const void pointer accept")
+int ctx_access_const_void_pointer_accept(void)
+{
+	/* load 2nd argument value (const void pointer) */
+	asm volatile ("r2 = *(u64 *)(r1 + 8); ");
+	return 0;
+}
+
 char _license[] SEC("license") = "GPL";
-- 
2.43.0
Re: [PATCH bpf-next 2/2] selftests/bpf: Add test to access const void pointer argument in tracing program
Posted by Jiri Olsa 9 months, 4 weeks ago
On Sun, Apr 13, 2025 at 01:06:26AM +0800, KaFai Wan wrote:
> Adding verifier test for accessing const void pointer argument in
> tracing programs.
> 
> The test program loads 2nd argument of kfree tp_btf which is
> const void pointer and checks that verifier allows that.
> 
> Signed-off-by: KaFai Wan <kafai.wan@hotmail.com>
> ---
>  .../selftests/bpf/progs/verifier_btf_ctx_access.c        | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
> index 28b939572cda..a6cec7f73dcd 100644
> --- a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
> +++ b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
> @@ -65,4 +65,13 @@ __naked void ctx_access_u32_pointer_reject_8(void)
>  "	::: __clobber_all);
>  }
>  
> +SEC("tp_btf/kfree")
> +__description("btf_ctx_access const void pointer accept")
> +int ctx_access_const_void_pointer_accept(void)
> +{
> +	/* load 2nd argument value (const void pointer) */
> +	asm volatile ("r2 = *(u64 *)(r1 + 8); ");

I think we should follow formatting of other tests in the file,
a do smth like:

	asm volatile ("				\
	r2 = *(u64 *)(r1 + 8); ");   /* load 2nd argument value (const void pointer) */\
	...

thanks,
jirka


> +	return 0;
> +}
> +
>  char _license[] SEC("license") = "GPL";
> -- 
> 2.43.0
>
Re: [PATCH bpf-next 2/2] selftests/bpf: Add test to access const void pointer argument in tracing program
Posted by Kafai Wan 9 months, 3 weeks ago
On Mon, Apr 14, 2025 at 6:35 PM Jiri Olsa <olsajiri@gmail.com> wrote:
>
> On Sun, Apr 13, 2025 at 01:06:26AM +0800, KaFai Wan wrote:
> > Adding verifier test for accessing const void pointer argument in
> > tracing programs.
> >
> > The test program loads 2nd argument of kfree tp_btf which is
> > const void pointer and checks that verifier allows that.
> >
> > Signed-off-by: KaFai Wan <kafai.wan@hotmail.com>
> > ---
> >  .../selftests/bpf/progs/verifier_btf_ctx_access.c        | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> >
> > diff --git a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
> > index 28b939572cda..a6cec7f73dcd 100644
> > --- a/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
> > +++ b/tools/testing/selftests/bpf/progs/verifier_btf_ctx_access.c
> > @@ -65,4 +65,13 @@ __naked void ctx_access_u32_pointer_reject_8(void)
> >  "    ::: __clobber_all);
> >  }
> >
> > +SEC("tp_btf/kfree")
> > +__description("btf_ctx_access const void pointer accept")
> > +int ctx_access_const_void_pointer_accept(void)
> > +{
> > +     /* load 2nd argument value (const void pointer) */
> > +     asm volatile ("r2 = *(u64 *)(r1 + 8); ");
>
> I think we should follow formatting of other tests in the file,
> a do smth like:
>
>         asm volatile ("                         \
>         r2 = *(u64 *)(r1 + 8); ");   /* load 2nd argument value (const void pointer) */\
>         ...

I will fix it. and I find out the kernel does not support test_run of tp_btf, I
will change to fentry.

>
> thanks,
> jirka
>
>
> > +     return 0;
> > +}
> > +
> >  char _license[] SEC("license") = "GPL";
> > --
> > 2.43.0
> >

thanks,
kafai