mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
selftests/bpf: Add tracing multi cookies test
Adding tests for using cookies on tracing multi link. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/r/20260606123955.345967-25-jolsa@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
4309f580a0
commit
1b938f42f5
|
|
@ -9,6 +9,19 @@
|
|||
#include "tracing_multi_intersect.skel.h"
|
||||
#include "trace_helpers.h"
|
||||
|
||||
static __u64 bpf_fentry_test_cookies[] = {
|
||||
8, /* bpf_fentry_test1 */
|
||||
9, /* bpf_fentry_test2 */
|
||||
7, /* bpf_fentry_test3 */
|
||||
5, /* bpf_fentry_test4 */
|
||||
4, /* bpf_fentry_test5 */
|
||||
2, /* bpf_fentry_test6 */
|
||||
3, /* bpf_fentry_test7 */
|
||||
1, /* bpf_fentry_test8 */
|
||||
10, /* bpf_fentry_test9 */
|
||||
6, /* bpf_fentry_test10 */
|
||||
};
|
||||
|
||||
static const char * const bpf_fentry_test[] = {
|
||||
"bpf_fentry_test1",
|
||||
"bpf_fentry_test2",
|
||||
|
|
@ -217,7 +230,7 @@ static void test_link_api_pattern(void)
|
|||
tracing_multi__destroy(skel);
|
||||
}
|
||||
|
||||
static void test_link_api_ids(void)
|
||||
static void test_link_api_ids(bool test_cookies)
|
||||
{
|
||||
LIBBPF_OPTS(bpf_tracing_multi_opts, opts);
|
||||
struct tracing_multi *skel;
|
||||
|
|
@ -229,6 +242,7 @@ static void test_link_api_ids(void)
|
|||
return;
|
||||
|
||||
skel->bss->pid = getpid();
|
||||
skel->bss->test_cookies = test_cookies;
|
||||
|
||||
ids = get_ids(bpf_fentry_test, cnt, NULL);
|
||||
if (!ASSERT_OK_PTR(ids, "get_ids"))
|
||||
|
|
@ -237,6 +251,9 @@ static void test_link_api_ids(void)
|
|||
opts.ids = ids;
|
||||
opts.cnt = cnt;
|
||||
|
||||
if (test_cookies)
|
||||
opts.cookies = bpf_fentry_test_cookies;
|
||||
|
||||
skel->links.test_fentry = bpf_program__attach_tracing_multi(skel->progs.test_fentry,
|
||||
NULL, &opts);
|
||||
if (!ASSERT_OK_PTR(skel->links.test_fentry, "bpf_program__attach_tracing_multi"))
|
||||
|
|
@ -450,7 +467,7 @@ void test_tracing_multi_test(void)
|
|||
if (test__start_subtest("link_api_pattern"))
|
||||
test_link_api_pattern();
|
||||
if (test__start_subtest("link_api_ids"))
|
||||
test_link_api_ids();
|
||||
test_link_api_ids(false);
|
||||
if (test__start_subtest("module_skel_api"))
|
||||
test_module_skel_api();
|
||||
if (test__start_subtest("module_link_api_pattern"))
|
||||
|
|
@ -459,4 +476,6 @@ void test_tracing_multi_test(void)
|
|||
test_module_link_api_ids();
|
||||
if (test__start_subtest("intersect"))
|
||||
test_intersect();
|
||||
if (test__start_subtest("cookies"))
|
||||
test_link_api_ids(true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
char _license[] SEC("license") = "GPL";
|
||||
|
||||
int pid = 0;
|
||||
bool test_cookies = false;
|
||||
|
||||
/* bpf_fentry_test1 is exported as kfunc via vmlinux.h */
|
||||
extern const void bpf_fentry_test2 __ksym;
|
||||
|
|
@ -27,7 +28,7 @@ extern const void bpf_testmod_fentry_test11 __ksym;
|
|||
int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
||||
{
|
||||
void *ip = (void *) bpf_get_func_ip(ctx);
|
||||
__u64 value = 0, ret = 0;
|
||||
__u64 value = 0, ret = 0, cookie = 0;
|
||||
long err = 0;
|
||||
|
||||
if (bpf_get_current_pid_tgid() >> 32 != pid)
|
||||
|
|
@ -35,6 +36,8 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
|
||||
if (is_return)
|
||||
err |= bpf_get_func_ret(ctx, &ret);
|
||||
if (test_cookies)
|
||||
cookie = bpf_get_attach_cookie(ctx);
|
||||
|
||||
if (ip == &bpf_fentry_test1) {
|
||||
int a;
|
||||
|
|
@ -43,6 +46,7 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
a = (int) value;
|
||||
|
||||
err |= is_return ? ret != 2 : 0;
|
||||
err |= test_cookies ? cookie != 8 : 0;
|
||||
|
||||
*test_result += err == 0 && a == 1;
|
||||
} else if (ip == &bpf_fentry_test2) {
|
||||
|
|
@ -55,6 +59,7 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
b = value;
|
||||
|
||||
err |= is_return ? ret != 5 : 0;
|
||||
err |= test_cookies ? cookie != 9 : 0;
|
||||
|
||||
*test_result += err == 0 && a == 2 && b == 3;
|
||||
} else if (ip == &bpf_fentry_test3) {
|
||||
|
|
@ -70,6 +75,7 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
c = value;
|
||||
|
||||
err |= is_return ? ret != 15 : 0;
|
||||
err |= test_cookies ? cookie != 7 : 0;
|
||||
|
||||
*test_result += err == 0 && a == 4 && b == 5 && c == 6;
|
||||
} else if (ip == &bpf_fentry_test4) {
|
||||
|
|
@ -88,6 +94,7 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
d = value;
|
||||
|
||||
err |= is_return ? ret != 34 : 0;
|
||||
err |= test_cookies ? cookie != 5 : 0;
|
||||
|
||||
*test_result += err == 0 && a == (void *) 7 && b == 8 && c == 9 && d == 10;
|
||||
} else if (ip == &bpf_fentry_test5) {
|
||||
|
|
@ -109,6 +116,7 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
e = value;
|
||||
|
||||
err |= is_return ? ret != 65 : 0;
|
||||
err |= test_cookies ? cookie != 4 : 0;
|
||||
|
||||
*test_result += err == 0 && a == 11 && b == (void *) 12 && c == 13 && d == 14 && e == 15;
|
||||
} else if (ip == &bpf_fentry_test6) {
|
||||
|
|
@ -133,22 +141,27 @@ int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return)
|
|||
f = value;
|
||||
|
||||
err |= is_return ? ret != 111 : 0;
|
||||
err |= test_cookies ? cookie != 2 : 0;
|
||||
|
||||
*test_result += err == 0 && a == 16 && b == (void *) 17 && c == 18 && d == 19 && e == (void *) 20 && f == 21;
|
||||
} else if (ip == &bpf_fentry_test7) {
|
||||
err |= is_return ? ret != 0 : 0;
|
||||
err |= test_cookies ? cookie != 3 : 0;
|
||||
|
||||
*test_result += err == 0 ? 1 : 0;
|
||||
} else if (ip == &bpf_fentry_test8) {
|
||||
err |= is_return ? ret != 0 : 0;
|
||||
err |= test_cookies ? cookie != 1 : 0;
|
||||
|
||||
*test_result += err == 0 ? 1 : 0;
|
||||
} else if (ip == &bpf_fentry_test9) {
|
||||
err |= is_return ? ret != 0 : 0;
|
||||
err |= test_cookies ? cookie != 10 : 0;
|
||||
|
||||
*test_result += err == 0 ? 1 : 0;
|
||||
} else if (ip == &bpf_fentry_test10) {
|
||||
err |= is_return ? ret != 0 : 0;
|
||||
err |= test_cookies ? cookie != 6 : 0;
|
||||
|
||||
*test_result += err == 0 ? 1 : 0;
|
||||
} else if (ip == &bpf_testmod_fentry_test1) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user