lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230602065958.2869555-6-imagedong@tencent.com>
Date:   Fri,  2 Jun 2023 14:59:58 +0800
From:   menglong8.dong@...il.com
To:     olsajiri@...il.com
Cc:     davem@...emloft.net, dsahern@...nel.org, ast@...nel.org,
        daniel@...earbox.net, andrii@...nel.org, martin.lau@...ux.dev,
        song@...nel.org, yhs@...com, john.fastabend@...il.com,
        kpsingh@...nel.org, sdf@...gle.com, haoluo@...gle.com,
        jolsa@...nel.org, tglx@...utronix.de, mingo@...hat.com,
        bp@...en8.de, dave.hansen@...ux.intel.com, x86@...nel.org,
        hpa@...or.com, edumazet@...gle.com, kuba@...nel.org,
        pabeni@...hat.com, mykolal@...com, shuah@...nel.org,
        benbjiang@...cent.com, iii@...ux.ibm.com, imagedong@...cent.com,
        xukuohai@...wei.com, chantr4@...il.com, zwisler@...gle.com,
        eddyz87@...il.com, netdev@...r.kernel.org, bpf@...r.kernel.org,
        linux-kernel@...r.kernel.org, linux-kselftest@...r.kernel.org
Subject: [PATCH bpf-next v2 5/5] selftests/bpf: add testcase for FENTRY/FEXIT with 6+ arguments

From: Menglong Dong <imagedong@...cent.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@...cent.com>
Signed-off-by: Menglong Dong <imagedong@...cent.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;
+}
+
 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;
 };
-- 
2.40.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ