xref: /linux/tools/testing/selftests/bpf/progs/test_custom_sec_handlers.c (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2022 Facebook */
3 
4 #include "vmlinux.h"
5 #include <bpf/bpf_helpers.h>
6 #include <bpf/bpf_tracing.h>
7 
8 const volatile int my_pid;
9 
10 bool abc1_called;
11 bool abc2_called;
12 bool custom1_called;
13 bool custom2_called;
14 bool kprobe1_called;
15 bool xyz_called;
16 
17 SEC("abc")
abc1(void * ctx)18 int abc1(void *ctx)
19 {
20 	abc1_called = true;
21 	return 0;
22 }
23 
24 SEC("abc/whatever")
abc2(void * ctx)25 int abc2(void *ctx)
26 {
27 	abc2_called = true;
28 	return 0;
29 }
30 
31 SEC("custom")
custom1(void * ctx)32 int custom1(void *ctx)
33 {
34 	custom1_called = true;
35 	return 0;
36 }
37 
38 SEC("custom/something")
custom2(void * ctx)39 int custom2(void *ctx)
40 {
41 	custom2_called = true;
42 	return 0;
43 }
44 
45 SEC("kprobe")
kprobe1(void * ctx)46 int kprobe1(void *ctx)
47 {
48 	kprobe1_called = true;
49 	return 0;
50 }
51 
52 SEC("xyz/blah")
xyz(void * ctx)53 int xyz(void *ctx)
54 {
55 	int whatever;
56 
57 	/* use sleepable helper, custom handler should set sleepable flag */
58 	bpf_copy_from_user(&whatever, sizeof(whatever), NULL);
59 	xyz_called = true;
60 	return 0;
61 }
62 
63 char _license[] SEC("license") = "GPL";
64