1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2019 Facebook */
3 #include <stdbool.h>
4 #include <stddef.h>
5 #include <linux/bpf.h>
6 #include <linux/ptrace.h>
7 #include <bpf/bpf_helpers.h>
8 #include <bpf/bpf_tracing.h>
9 #include "bpf_trace_helpers.h"
10 
11 struct task_struct;
12 
13 SEC("kprobe/__set_task_comm")
14 int BPF_KPROBE(prog1, struct task_struct *tsk, const char *buf, bool exec)
15 {
16 	return !tsk;
17 }
18 
19 SEC("kretprobe/__set_task_comm")
20 int BPF_KRETPROBE(prog2,
21 		  struct task_struct *tsk, const char *buf, bool exec,
22 		  int ret)
23 {
24 	return !PT_REGS_PARM1(ctx) && ret;
25 }
26 
27 SEC("raw_tp/task_rename")
28 int prog3(struct bpf_raw_tracepoint_args *ctx)
29 {
30 	return !ctx->args[0];
31 }
32 
33 SEC("fentry/__set_task_comm")
34 int BPF_PROG(prog4, struct task_struct *tsk, const char *buf, bool exec)
35 {
36 	return !tsk;
37 }
38 
39 SEC("fexit/__set_task_comm")
40 int BPF_PROG(prog5, struct task_struct *tsk, const char *buf, bool exec)
41 {
42 	return !tsk;
43 }
44 
45 char _license[] SEC("license") = "GPL";
46