1*69f25d4bSJiri Olsa // SPDX-License-Identifier: GPL-2.0 2*69f25d4bSJiri Olsa #include <vmlinux.h> 3*69f25d4bSJiri Olsa #include <bpf/bpf_helpers.h> 4*69f25d4bSJiri Olsa #include <bpf/bpf_tracing.h> 5*69f25d4bSJiri Olsa 6*69f25d4bSJiri Olsa char _license[] SEC("license") = "GPL"; 7*69f25d4bSJiri Olsa 8*69f25d4bSJiri Olsa __hidden extern int tracing_multi_arg_check(__u64 *ctx, __u64 *test_result, bool is_return); 9*69f25d4bSJiri Olsa 10*69f25d4bSJiri Olsa __u64 test_result_fentry = 0; 11*69f25d4bSJiri Olsa __u64 test_result_fexit = 0; 12*69f25d4bSJiri Olsa 13*69f25d4bSJiri Olsa SEC("fsession.multi/bpf_fentry_test*") 14*69f25d4bSJiri Olsa int BPF_PROG(test_session_1) 15*69f25d4bSJiri Olsa { 16*69f25d4bSJiri Olsa volatile __u64 *cookie = bpf_session_cookie(ctx); 17*69f25d4bSJiri Olsa 18*69f25d4bSJiri Olsa if (bpf_session_is_return(ctx)) { 19*69f25d4bSJiri Olsa if (tracing_multi_arg_check(ctx, &test_result_fexit, true)) 20*69f25d4bSJiri Olsa return 0; 21*69f25d4bSJiri Olsa /* extra count for test_result_fexit cookie */ 22*69f25d4bSJiri Olsa test_result_fexit += *cookie == 0xbeafbeafbeafbeaf; 23*69f25d4bSJiri Olsa } else { 24*69f25d4bSJiri Olsa if (tracing_multi_arg_check(ctx, &test_result_fentry, false)) 25*69f25d4bSJiri Olsa return 0; 26*69f25d4bSJiri Olsa *cookie = 0xbeafbeafbeafbeaf; 27*69f25d4bSJiri Olsa } 28*69f25d4bSJiri Olsa return 0; 29*69f25d4bSJiri Olsa } 30*69f25d4bSJiri Olsa 31*69f25d4bSJiri Olsa SEC("fsession.multi.s/bpf_fentry_test1") 32*69f25d4bSJiri Olsa int BPF_PROG(test_fsession_s) 33*69f25d4bSJiri Olsa { 34*69f25d4bSJiri Olsa volatile __u64 *cookie = bpf_session_cookie(ctx); 35*69f25d4bSJiri Olsa 36*69f25d4bSJiri Olsa if (bpf_session_is_return(ctx)) { 37*69f25d4bSJiri Olsa if (tracing_multi_arg_check(ctx, &test_result_fexit, true)) 38*69f25d4bSJiri Olsa return 0; 39*69f25d4bSJiri Olsa /* extra count for test_result_fexit cookie */ 40*69f25d4bSJiri Olsa test_result_fexit += *cookie == 0xbeafbeafbeafbeaf; 41*69f25d4bSJiri Olsa } else { 42*69f25d4bSJiri Olsa if (tracing_multi_arg_check(ctx, &test_result_fentry, false)) 43*69f25d4bSJiri Olsa return 0; 44*69f25d4bSJiri Olsa *cookie = 0xbeafbeafbeafbeaf; 45*69f25d4bSJiri Olsa } 46*69f25d4bSJiri Olsa return 0; 47*69f25d4bSJiri Olsa } 48*69f25d4bSJiri Olsa 49*69f25d4bSJiri Olsa SEC("fsession.multi/bpf_testmod:bpf_testmod_fentry_test*") 50*69f25d4bSJiri Olsa int BPF_PROG(test_session_2) 51*69f25d4bSJiri Olsa { 52*69f25d4bSJiri Olsa volatile __u64 *cookie = bpf_session_cookie(ctx); 53*69f25d4bSJiri Olsa 54*69f25d4bSJiri Olsa if (bpf_session_is_return(ctx)) { 55*69f25d4bSJiri Olsa if (tracing_multi_arg_check(ctx, &test_result_fexit, true)) 56*69f25d4bSJiri Olsa return 0; 57*69f25d4bSJiri Olsa /* extra count for test_result_fexit cookie */ 58*69f25d4bSJiri Olsa test_result_fexit += *cookie == 0xbeafbeafbeafbeaf; 59*69f25d4bSJiri Olsa } else { 60*69f25d4bSJiri Olsa if (tracing_multi_arg_check(ctx, &test_result_fentry, false)) 61*69f25d4bSJiri Olsa return 0; 62*69f25d4bSJiri Olsa *cookie = 0xbeafbeafbeafbeaf; 63*69f25d4bSJiri Olsa } 64*69f25d4bSJiri Olsa return 0; 65*69f25d4bSJiri Olsa } 66