diff options
| author | David Vernet <void@manifault.com> | 2023-01-19 20:18:44 -0600 | 
|---|---|---|
| committer | Daniel Borkmann <daniel@iogearbox.net> | 2023-01-23 20:32:20 +0100 | 
| commit | 7525daeefc8c20902bac63f89603096c76808fe0 (patch) | |
| tree | 3b49a334c308aecda56e9b29becb2b0426b594cf /tools/testing/selftests/bpf/prog_tests | |
| parent | 74d23931f4096efcdef1bc12cc828585e49e99ce (diff) | |
selftests/bpf: Use __failure macro in task kfunc testsuite
In commit 537c3f66eac1 ("selftests/bpf: add generic BPF program tester-loader"),
a new mechanism was added to the BPF selftest framework to allow testsuites to
use macros to define expected failing testcases.
This allows any testsuite which tests verification failure to remove a good
amount of boilerplate code. This patch updates the task_kfunc selftest suite
to use these new macros.
Signed-off-by: David Vernet <void@manifault.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20230120021844.3048244-1-void@manifault.com
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests')
| -rw-r--r-- | tools/testing/selftests/bpf/prog_tests/task_kfunc.c | 71 | 
1 files changed, 1 insertions, 70 deletions
| diff --git a/tools/testing/selftests/bpf/prog_tests/task_kfunc.c b/tools/testing/selftests/bpf/prog_tests/task_kfunc.c index 18848c31e36f..f79fa5bc9a8d 100644 --- a/tools/testing/selftests/bpf/prog_tests/task_kfunc.c +++ b/tools/testing/selftests/bpf/prog_tests/task_kfunc.c @@ -9,9 +9,6 @@  #include "task_kfunc_failure.skel.h"  #include "task_kfunc_success.skel.h" -static size_t log_buf_sz = 1 << 20; /* 1 MB */ -static char obj_log_buf[1048576]; -  static struct task_kfunc_success *open_load_task_kfunc_skel(void)  {  	struct task_kfunc_success *skel; @@ -83,67 +80,6 @@ static const char * const success_tests[] = {  	"test_task_from_pid_invalid",  }; -static struct { -	const char *prog_name; -	const char *expected_err_msg; -} failure_tests[] = { -	{"task_kfunc_acquire_untrusted", "R1 must be referenced or trusted"}, -	{"task_kfunc_acquire_fp", "arg#0 pointer type STRUCT task_struct must point"}, -	{"task_kfunc_acquire_unsafe_kretprobe", "reg type unsupported for arg#0 function"}, -	{"task_kfunc_acquire_trusted_walked", "R1 must be referenced or trusted"}, -	{"task_kfunc_acquire_null", "arg#0 pointer type STRUCT task_struct must point"}, -	{"task_kfunc_acquire_unreleased", "Unreleased reference"}, -	{"task_kfunc_get_non_kptr_param", "arg#0 expected pointer to map value"}, -	{"task_kfunc_get_non_kptr_acquired", "arg#0 expected pointer to map value"}, -	{"task_kfunc_get_null", "arg#0 expected pointer to map value"}, -	{"task_kfunc_xchg_unreleased", "Unreleased reference"}, -	{"task_kfunc_get_unreleased", "Unreleased reference"}, -	{"task_kfunc_release_untrusted", "arg#0 is untrusted_ptr_or_null_ expected ptr_ or socket"}, -	{"task_kfunc_release_fp", "arg#0 pointer type STRUCT task_struct must point"}, -	{"task_kfunc_release_null", "arg#0 is ptr_or_null_ expected ptr_ or socket"}, -	{"task_kfunc_release_unacquired", "release kernel function bpf_task_release expects"}, -	{"task_kfunc_from_pid_no_null_check", "arg#0 is ptr_or_null_ expected ptr_ or socket"}, -	{"task_kfunc_from_lsm_task_free", "reg type unsupported for arg#0 function"}, -}; - -static void verify_fail(const char *prog_name, const char *expected_err_msg) -{ -	LIBBPF_OPTS(bpf_object_open_opts, opts); -	struct task_kfunc_failure *skel; -	int err, i; - -	opts.kernel_log_buf = obj_log_buf; -	opts.kernel_log_size = log_buf_sz; -	opts.kernel_log_level = 1; - -	skel = task_kfunc_failure__open_opts(&opts); -	if (!ASSERT_OK_PTR(skel, "task_kfunc_failure__open_opts")) -		goto cleanup; - -	for (i = 0; i < ARRAY_SIZE(failure_tests); i++) { -		struct bpf_program *prog; -		const char *curr_name = failure_tests[i].prog_name; - -		prog = bpf_object__find_program_by_name(skel->obj, curr_name); -		if (!ASSERT_OK_PTR(prog, "bpf_object__find_program_by_name")) -			goto cleanup; - -		bpf_program__set_autoload(prog, !strcmp(curr_name, prog_name)); -	} - -	err = task_kfunc_failure__load(skel); -	if (!ASSERT_ERR(err, "unexpected load success")) -		goto cleanup; - -	if (!ASSERT_OK_PTR(strstr(obj_log_buf, expected_err_msg), "expected_err_msg")) { -		fprintf(stderr, "Expected err_msg: %s\n", expected_err_msg); -		fprintf(stderr, "Verifier output: %s\n", obj_log_buf); -	} - -cleanup: -	task_kfunc_failure__destroy(skel); -} -  void test_task_kfunc(void)  {  	int i; @@ -155,10 +91,5 @@ void test_task_kfunc(void)  		run_success_test(success_tests[i]);  	} -	for (i = 0; i < ARRAY_SIZE(failure_tests); i++) { -		if (!test__start_subtest(failure_tests[i].prog_name)) -			continue; - -		verify_fail(failure_tests[i].prog_name, failure_tests[i].expected_err_msg); -	} +	RUN_TESTS(task_kfunc_failure);  } | 
