52 lines · c
1// SPDX-License-Identifier: GPL-2.02 3#include "vmlinux.h"4#include <bpf/bpf_helpers.h>5#include <bpf/bpf_tracing.h>6 7struct {8 __uint(type, BPF_MAP_TYPE_ARRAY);9 __uint(max_entries, 8);10 __type(key, __u32);11 __type(value, __u64);12} test_array SEC(".maps");13 14unsigned int triggered;15 16static __u64 test_cb(struct bpf_map *map, __u32 *key, __u64 *val, void *data)17{18 return 1;19}20 21SEC("fexit/bpf_testmod_return_ptr")22int BPF_PROG(handle_fexit_ret_subprogs, int arg, struct file *ret)23{24 *(volatile long *)ret;25 *(volatile int *)&ret->f_mode;26 bpf_for_each_map_elem(&test_array, test_cb, NULL, 0);27 triggered++;28 return 0;29}30 31SEC("fexit/bpf_testmod_return_ptr")32int BPF_PROG(handle_fexit_ret_subprogs2, int arg, struct file *ret)33{34 *(volatile long *)ret;35 *(volatile int *)&ret->f_mode;36 bpf_for_each_map_elem(&test_array, test_cb, NULL, 0);37 triggered++;38 return 0;39}40 41SEC("fexit/bpf_testmod_return_ptr")42int BPF_PROG(handle_fexit_ret_subprogs3, int arg, struct file *ret)43{44 *(volatile long *)ret;45 *(volatile int *)&ret->f_mode;46 bpf_for_each_map_elem(&test_array, test_cb, NULL, 0);47 triggered++;48 return 0;49}50 51char _license[] SEC("license") = "GPL";52