diff mbox series

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

Message ID 20250412170626.3638516-3-kafai.wan@hotmail.com (mailing list archive)
State New
Headers show
Series bpf: Allow access to const void pointer arguments in tracing programs | expand

Commit Message

Kafai Wan April 12, 2025, 5:06 p.m. UTC
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(+)

Comments

Jiri Olsa April 14, 2025, 10:35 a.m. UTC | #1
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
>
Kafai Wan April 15, 2025, 2:31 p.m. UTC | #2
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
diff mbox series

Patch

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";