xref: /openbmc/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