diff mbox series

[bpf-next,v2,5/5] selftests/bpf: add testcase for FENTRY/FEXIT with 6+ arguments

Message ID 20230602065958.2869555-6-imagedong@tencent.com (mailing list archive)
State Changes Requested
Delegated to: BPF
Headers show
Series bpf, x86: allow function arguments up to 14 for TRACING | expand

Checks

Context Check Description
bpf/vmtest-bpf-next-VM_Test-1 success Logs for ShellCheck
bpf/vmtest-bpf-next-VM_Test-6 success Logs for set-matrix
bpf/vmtest-bpf-next-VM_Test-2 success Logs for build for aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-4 success Logs for build for x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-5 success Logs for build for x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-3 success Logs for build for s390x with gcc
bpf/vmtest-bpf-next-VM_Test-7 success Logs for test_maps on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-9 success Logs for test_maps on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-10 success Logs for test_maps on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-17 fail Logs for test_progs_no_alu32 on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-18 fail Logs for test_progs_no_alu32 on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-19 success Logs for test_progs_no_alu32_parallel on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-20 success Logs for test_progs_no_alu32_parallel on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-21 success Logs for test_progs_no_alu32_parallel on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-22 success Logs for test_progs_parallel on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-23 success Logs for test_progs_parallel on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-24 success Logs for test_progs_parallel on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-25 success Logs for test_verifier on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-27 success Logs for test_verifier on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-28 success Logs for test_verifier on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-29 success Logs for veristat
bpf/vmtest-bpf-next-VM_Test-11 fail Logs for test_progs on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-13 fail Logs for test_progs on x86_64 with gcc
bpf/vmtest-bpf-next-VM_Test-14 fail Logs for test_progs on x86_64 with llvm-16
bpf/vmtest-bpf-next-VM_Test-15 fail Logs for test_progs_no_alu32 on aarch64 with gcc
bpf/vmtest-bpf-next-VM_Test-26 success Logs for test_verifier on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-16 success Logs for test_progs_no_alu32 on s390x with gcc
bpf/vmtest-bpf-next-VM_Test-12 fail Logs for test_progs on s390x with gcc
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for bpf-next, async
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit fail Errors and warnings before: 23 this patch: 26
netdev/cc_maintainers success CCed 22 of 22 maintainers
netdev/build_clang success Errors and warnings before: 8 this patch: 8
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn fail Errors and warnings before: 23 this patch: 26
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 123 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
bpf/vmtest-bpf-next-PR fail PR summary
bpf/vmtest-bpf-next-VM_Test-8 success Logs for test_maps on s390x with gcc

Commit Message

Menglong Dong June 2, 2023, 6:59 a.m. UTC
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(-)

Comments

Ilya Leoshkevich June 2, 2023, 8:24 a.m. UTC | #1
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?
Menglong Dong June 2, 2023, 8:47 a.m. UTC | #2
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
Alexei Starovoitov June 2, 2023, 6:32 p.m. UTC | #3
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.
Menglong Dong June 5, 2023, 2:55 a.m. UTC | #4
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 mbox series

Patch

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