Message ID | 20230602065958.2869555-6-imagedong@tencent.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | bpf, x86: allow function arguments up to 14 for TRACING | expand |
On Fri, 2023-06-02 at 14:59 +0800, menglong8.dong@gmail.com wrote: > From: Menglong Dong <imagedong@tencent.com> > > Add test7/test12/test14 in fexit_test.c and fentry_test.c to test the > fentry and fexit whose target function have 7/12/14 arguments. > > And the testcases passed: > > ./test_progs -t fexit > $71 fentry_fexit:OK > $73/1 fexit_bpf2bpf/target_no_callees:OK > $73/2 fexit_bpf2bpf/target_yes_callees:OK > $73/3 fexit_bpf2bpf/func_replace:OK > $73/4 fexit_bpf2bpf/func_replace_verify:OK > $73/5 fexit_bpf2bpf/func_sockmap_update:OK > $73/6 fexit_bpf2bpf/func_replace_return_code:OK > $73/7 fexit_bpf2bpf/func_map_prog_compatibility:OK > $73/8 fexit_bpf2bpf/func_replace_multi:OK > $73/9 fexit_bpf2bpf/fmod_ret_freplace:OK > $73/10 fexit_bpf2bpf/func_replace_global_func:OK > $73/11 fexit_bpf2bpf/fentry_to_cgroup_bpf:OK > $73/12 fexit_bpf2bpf/func_replace_progmap:OK > $73 fexit_bpf2bpf:OK > $74 fexit_sleep:OK > $75 fexit_stress:OK > $76 fexit_test:OK > Summary: 5/12 PASSED, 0 SKIPPED, 0 FAILED > > ./test_progs -t fentry > $71 fentry_fexit:OK > $72 fentry_test:OK > $140 module_fentry_shadow:OK > Summary: 3/0 PASSED, 0 SKIPPED, 0 FAILED > > Reviewed-by: Jiang Biao <benbjiang@tencent.com> > Signed-off-by: Menglong Dong <imagedong@tencent.com> > --- > net/bpf/test_run.c | 30 +++++++++++++++- > .../testing/selftests/bpf/progs/fentry_test.c | 34 > ++++++++++++++++++ > .../testing/selftests/bpf/progs/fexit_test.c | 35 > +++++++++++++++++++ > 3 files changed, 98 insertions(+), 1 deletion(-) Don't you also need --- a/tools/testing/selftests/bpf/prog_tests/fentry_fexit.c +++ b/tools/testing/selftests/bpf/prog_tests/fentry_fexit.c @@ -34,7 +34,7 @@ void test_fentry_fexit(void) fentry_res = (__u64 *)fentry_skel->bss; fexit_res = (__u64 *)fexit_skel->bss; printf("%lld\n", fentry_skel->bss->test1_result); - for (i = 0; i < 8; i++) { + for (i = 0; i < 11; i++) { ASSERT_EQ(fentry_res[i], 1, "fentry result"); ASSERT_EQ(fexit_res[i], 1, "fexit result"); } to verify the results of the new tests?
On Fri, Jun 2, 2023 at 4:24 PM Ilya Leoshkevich <iii@linux.ibm.com> wrote: > > On Fri, 2023-06-02 at 14:59 +0800, menglong8.dong@gmail.com wrote: > > From: Menglong Dong <imagedong@tencent.com> > > > > Add test7/test12/test14 in fexit_test.c and fentry_test.c to test the > > fentry and fexit whose target function have 7/12/14 arguments. > > > > And the testcases passed: > > > > ./test_progs -t fexit > > $71 fentry_fexit:OK > > $73/1 fexit_bpf2bpf/target_no_callees:OK > > $73/2 fexit_bpf2bpf/target_yes_callees:OK > > $73/3 fexit_bpf2bpf/func_replace:OK > > $73/4 fexit_bpf2bpf/func_replace_verify:OK > > $73/5 fexit_bpf2bpf/func_sockmap_update:OK > > $73/6 fexit_bpf2bpf/func_replace_return_code:OK > > $73/7 fexit_bpf2bpf/func_map_prog_compatibility:OK > > $73/8 fexit_bpf2bpf/func_replace_multi:OK > > $73/9 fexit_bpf2bpf/fmod_ret_freplace:OK > > $73/10 fexit_bpf2bpf/func_replace_global_func:OK > > $73/11 fexit_bpf2bpf/fentry_to_cgroup_bpf:OK > > $73/12 fexit_bpf2bpf/func_replace_progmap:OK > > $73 fexit_bpf2bpf:OK > > $74 fexit_sleep:OK > > $75 fexit_stress:OK > > $76 fexit_test:OK > > Summary: 5/12 PASSED, 0 SKIPPED, 0 FAILED > > > > ./test_progs -t fentry > > $71 fentry_fexit:OK > > $72 fentry_test:OK > > $140 module_fentry_shadow:OK > > Summary: 3/0 PASSED, 0 SKIPPED, 0 FAILED > > > > Reviewed-by: Jiang Biao <benbjiang@tencent.com> > > Signed-off-by: Menglong Dong <imagedong@tencent.com> > > --- > > net/bpf/test_run.c | 30 +++++++++++++++- > > .../testing/selftests/bpf/progs/fentry_test.c | 34 > > ++++++++++++++++++ > > .../testing/selftests/bpf/progs/fexit_test.c | 35 > > +++++++++++++++++++ > > 3 files changed, 98 insertions(+), 1 deletion(-) > > Don't you also need > > --- a/tools/testing/selftests/bpf/prog_tests/fentry_fexit.c > +++ b/tools/testing/selftests/bpf/prog_tests/fentry_fexit.c > @@ -34,7 +34,7 @@ void test_fentry_fexit(void) > fentry_res = (__u64 *)fentry_skel->bss; > fexit_res = (__u64 *)fexit_skel->bss; > printf("%lld\n", fentry_skel->bss->test1_result); > - for (i = 0; i < 8; i++) { > + for (i = 0; i < 11; i++) { > ASSERT_EQ(fentry_res[i], 1, "fentry result"); > ASSERT_EQ(fexit_res[i], 1, "fexit result"); > } > > to verify the results of the new tests? Oops, I missed this part......Thank you for reminding, and I'll fix it in V3. Thanks! Menglong Dong
On Fri, Jun 2, 2023 at 12:03 AM <menglong8.dong@gmail.com> wrote: > > From: Menglong Dong <imagedong@tencent.com> > > Add test7/test12/test14 in fexit_test.c and fentry_test.c to test the > fentry and fexit whose target function have 7/12/14 arguments. > > And the testcases passed: > > ./test_progs -t fexit > $71 fentry_fexit:OK > $73/1 fexit_bpf2bpf/target_no_callees:OK > $73/2 fexit_bpf2bpf/target_yes_callees:OK > $73/3 fexit_bpf2bpf/func_replace:OK > $73/4 fexit_bpf2bpf/func_replace_verify:OK > $73/5 fexit_bpf2bpf/func_sockmap_update:OK > $73/6 fexit_bpf2bpf/func_replace_return_code:OK > $73/7 fexit_bpf2bpf/func_map_prog_compatibility:OK > $73/8 fexit_bpf2bpf/func_replace_multi:OK > $73/9 fexit_bpf2bpf/fmod_ret_freplace:OK > $73/10 fexit_bpf2bpf/func_replace_global_func:OK > $73/11 fexit_bpf2bpf/fentry_to_cgroup_bpf:OK > $73/12 fexit_bpf2bpf/func_replace_progmap:OK > $73 fexit_bpf2bpf:OK > $74 fexit_sleep:OK > $75 fexit_stress:OK > $76 fexit_test:OK > Summary: 5/12 PASSED, 0 SKIPPED, 0 FAILED > > ./test_progs -t fentry > $71 fentry_fexit:OK > $72 fentry_test:OK > $140 module_fentry_shadow:OK > Summary: 3/0 PASSED, 0 SKIPPED, 0 FAILED > > Reviewed-by: Jiang Biao <benbjiang@tencent.com> > Signed-off-by: Menglong Dong <imagedong@tencent.com> > --- > net/bpf/test_run.c | 30 +++++++++++++++- > .../testing/selftests/bpf/progs/fentry_test.c | 34 ++++++++++++++++++ > .../testing/selftests/bpf/progs/fexit_test.c | 35 +++++++++++++++++++ > 3 files changed, 98 insertions(+), 1 deletion(-) > > diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c > index c73f246a706f..e12a72311eca 100644 > --- a/net/bpf/test_run.c > +++ b/net/bpf/test_run.c > @@ -536,6 +536,27 @@ int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f) > return a + (long)b + c + d + (long)e + f; > } > > +noinline int bpf_fentry_test7(u64 a, void *b, short c, int d, void *e, > + u64 f, u64 g) > +{ > + return a + (long)b + c + d + (long)e + f + g; > +} > + > +noinline int bpf_fentry_test12(u64 a, void *b, short c, int d, void *e, > + u64 f, u64 g, u64 h, u64 i, u64 j, > + u64 k, u64 l) > +{ > + return a + (long)b + c + d + (long)e + f + g + h + i + j + k + l; > +} > + > +noinline int bpf_fentry_test14(u64 a, void *b, short c, int d, void *e, > + u64 f, u64 g, u64 h, u64 i, u64 j, > + u64 k, u64 l, u64 m, u64 n) > +{ > + return a + (long)b + c + d + (long)e + f + g + h + i + j + k + l + > + m + n; > +} Please add test func to bpf_testmod instead of here.
On Sat, Jun 3, 2023 at 2:32 AM Alexei Starovoitov <alexei.starovoitov@gmail.com> wrote: > > On Fri, Jun 2, 2023 at 12:03 AM <menglong8.dong@gmail.com> wrote: > > > > From: Menglong Dong <imagedong@tencent.com> > > > > Add test7/test12/test14 in fexit_test.c and fentry_test.c to test the > > fentry and fexit whose target function have 7/12/14 arguments. > > > > And the testcases passed: > > > > ./test_progs -t fexit > > $71 fentry_fexit:OK > > $73/1 fexit_bpf2bpf/target_no_callees:OK > > $73/2 fexit_bpf2bpf/target_yes_callees:OK > > $73/3 fexit_bpf2bpf/func_replace:OK > > $73/4 fexit_bpf2bpf/func_replace_verify:OK > > $73/5 fexit_bpf2bpf/func_sockmap_update:OK > > $73/6 fexit_bpf2bpf/func_replace_return_code:OK > > $73/7 fexit_bpf2bpf/func_map_prog_compatibility:OK > > $73/8 fexit_bpf2bpf/func_replace_multi:OK > > $73/9 fexit_bpf2bpf/fmod_ret_freplace:OK > > $73/10 fexit_bpf2bpf/func_replace_global_func:OK > > $73/11 fexit_bpf2bpf/fentry_to_cgroup_bpf:OK > > $73/12 fexit_bpf2bpf/func_replace_progmap:OK > > $73 fexit_bpf2bpf:OK > > $74 fexit_sleep:OK > > $75 fexit_stress:OK > > $76 fexit_test:OK > > Summary: 5/12 PASSED, 0 SKIPPED, 0 FAILED > > > > ./test_progs -t fentry > > $71 fentry_fexit:OK > > $72 fentry_test:OK > > $140 module_fentry_shadow:OK > > Summary: 3/0 PASSED, 0 SKIPPED, 0 FAILED > > > > Reviewed-by: Jiang Biao <benbjiang@tencent.com> > > Signed-off-by: Menglong Dong <imagedong@tencent.com> > > --- > > net/bpf/test_run.c | 30 +++++++++++++++- > > .../testing/selftests/bpf/progs/fentry_test.c | 34 ++++++++++++++++++ > > .../testing/selftests/bpf/progs/fexit_test.c | 35 +++++++++++++++++++ > > 3 files changed, 98 insertions(+), 1 deletion(-) > > > > diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c > > index c73f246a706f..e12a72311eca 100644 > > --- a/net/bpf/test_run.c > > +++ b/net/bpf/test_run.c > > @@ -536,6 +536,27 @@ int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f) > > return a + (long)b + c + d + (long)e + f; > > } > > > > +noinline int bpf_fentry_test7(u64 a, void *b, short c, int d, void *e, > > + u64 f, u64 g) > > +{ > > + return a + (long)b + c + d + (long)e + f + g; > > +} > > + > > +noinline int bpf_fentry_test12(u64 a, void *b, short c, int d, void *e, > > + u64 f, u64 g, u64 h, u64 i, u64 j, > > + u64 k, u64 l) > > +{ > > + return a + (long)b + c + d + (long)e + f + g + h + i + j + k + l; > > +} > > + > > +noinline int bpf_fentry_test14(u64 a, void *b, short c, int d, void *e, > > + u64 f, u64 g, u64 h, u64 i, u64 j, > > + u64 k, u64 l, u64 m, u64 n) > > +{ > > + return a + (long)b + c + d + (long)e + f + g + h + i + j + k + l + > > + m + n; > > +} > > Please add test func to bpf_testmod instead of here. Okay! Thanks! Menglong Dong
diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c index c73f246a706f..e12a72311eca 100644 --- a/net/bpf/test_run.c +++ b/net/bpf/test_run.c @@ -536,6 +536,27 @@ int noinline bpf_fentry_test6(u64 a, void *b, short c, int d, void *e, u64 f) return a + (long)b + c + d + (long)e + f; } +noinline int bpf_fentry_test7(u64 a, void *b, short c, int d, void *e, + u64 f, u64 g) +{ + return a + (long)b + c + d + (long)e + f + g; +} + +noinline int bpf_fentry_test12(u64 a, void *b, short c, int d, void *e, + u64 f, u64 g, u64 h, u64 i, u64 j, + u64 k, u64 l) +{ + return a + (long)b + c + d + (long)e + f + g + h + i + j + k + l; +} + +noinline int bpf_fentry_test14(u64 a, void *b, short c, int d, void *e, + u64 f, u64 g, u64 h, u64 i, u64 j, + u64 k, u64 l, u64 m, u64 n) +{ + return a + (long)b + c + d + (long)e + f + g + h + i + j + k + l + + m + n; +} + struct bpf_fentry_test_t { struct bpf_fentry_test_t *a; }; @@ -657,7 +678,14 @@ int bpf_prog_test_run_tracing(struct bpf_prog *prog, bpf_fentry_test6(16, (void *)17, 18, 19, (void *)20, 21) != 111 || bpf_fentry_test_ptr1((struct bpf_fentry_test_t *)0) != 0 || bpf_fentry_test_ptr2(&arg) != 0 || - bpf_fentry_test_ptr3(&retval) != 0) + bpf_fentry_test_ptr3(&retval) != 0 || + bpf_fentry_test7(16, (void *)17, 18, 19, (void *)20, + 21, 22) != 133 || + bpf_fentry_test12(16, (void *)17, 18, 19, (void *)20, + 21, 22, 23, 24, 25, 26, 27) != 258 || + bpf_fentry_test14(16, (void *)17, 18, 19, (void *)20, + 21, 22, 23, 24, 25, 26, 27, 28, + 29) != 315) goto out; break; case BPF_MODIFY_RETURN: diff --git a/tools/testing/selftests/bpf/progs/fentry_test.c b/tools/testing/selftests/bpf/progs/fentry_test.c index 558a5f1d3d5c..0666a907f7ea 100644 --- a/tools/testing/selftests/bpf/progs/fentry_test.c +++ b/tools/testing/selftests/bpf/progs/fentry_test.c @@ -56,6 +56,40 @@ int BPF_PROG(test6, __u64 a, void *b, short c, int d, void * e, __u64 f) return 0; } +__u64 test7_result = 0; +SEC("fentry/bpf_fentry_test7") +int BPF_PROG(test7, __u64 a, void *b, short c, int d, void *e, __u64 f, + __u64 g) +{ + test7_result = a == 16 && b == (void *)17 && c == 18 && d == 19 && + e == (void *)20 && f == 21 && g == 22; + return 0; +} + +__u64 test12_result = 0; +SEC("fentry/bpf_fentry_test12") +int BPF_PROG(test12, __u64 a, void *b, short c, int d, void *e, __u64 f, + __u64 g, __u64 h, __u64 i, __u64 j, __u64 k, __u64 l) +{ + test12_result = a == 16 && b == (void *)17 && c == 18 && d == 19 && + e == (void *)20 && f == 21 && g == 22 && h == 23 && + i == 24 && j == 25 && k == 26 && l == 27; + return 0; +} + +__u64 test14_result = 0; +SEC("fentry/bpf_fentry_test14") +int BPF_PROG(test14, __u64 a, void *b, short c, int d, void *e, __u64 f, + __u64 g, __u64 h, __u64 i, __u64 j, __u64 k, __u64 l, + __u64 m, __u64 n) +{ + test14_result = a == 16 && b == (void *)17 && c == 18 && d == 19 && + e == (void *)20 && f == 21 && g == 22 && h == 23 && + i == 24 && j == 25 && k == 26 && l == 27 && m == 28 && + n == 29; + return 0; +} + struct bpf_fentry_test_t { struct bpf_fentry_test_t *a; }; diff --git a/tools/testing/selftests/bpf/progs/fexit_test.c b/tools/testing/selftests/bpf/progs/fexit_test.c index f57886e6d918..1b9102ad1418 100644 --- a/tools/testing/selftests/bpf/progs/fexit_test.c +++ b/tools/testing/selftests/bpf/progs/fexit_test.c @@ -57,6 +57,41 @@ int BPF_PROG(test6, __u64 a, void *b, short c, int d, void *e, __u64 f, int ret) return 0; } +__u64 test7_result = 0; +SEC("fexit/bpf_fentry_test7") +int BPF_PROG(test7, __u64 a, void *b, short c, int d, void *e, __u64 f, + __u64 g, int ret) +{ + test7_result = a == 16 && b == (void *)17 && c == 18 && d == 19 && + e == (void *)20 && f == 21 && g == 22 && ret == 133; + return 0; +} + +__u64 test12_result = 0; +SEC("fexit/bpf_fentry_test12") +int BPF_PROG(test12, __u64 a, void *b, short c, int d, void *e, __u64 f, + __u64 g, __u64 h, __u64 i, __u64 j, __u64 k, __u64 l, + int ret) +{ + test12_result = a == 16 && b == (void *)17 && c == 18 && d == 19 && + e == (void *)20 && f == 21 && g == 22 && h == 23 && + i == 24 && j == 25 && k == 26 && l == 27 && ret == 258; + return 0; +} + +__u64 test14_result = 0; +SEC("fexit/bpf_fentry_test14") +int BPF_PROG(test14, __u64 a, void *b, short c, int d, void *e, __u64 f, + __u64 g, __u64 h, __u64 i, __u64 j, __u64 k, __u64 l, + __u64 m, __u64 n, int ret) +{ + test14_result = a == 16 && b == (void *)17 && c == 18 && d == 19 && + e == (void *)20 && f == 21 && g == 22 && h == 23 && + i == 24 && j == 25 && k == 26 && l == 27 && m == 28 && + n == 29 && ret == 315; + return 0; +} + struct bpf_fentry_test_t { struct bpf_fentry_test *a; };