1*f108662bSSong Liu // SPDX-License-Identifier: GPL-2.0
2*f108662bSSong Liu /* Copyright (c) 2021 Facebook */
3*f108662bSSong Liu #include "vmlinux.h"
4*f108662bSSong Liu #include <bpf/bpf_helpers.h>
5*f108662bSSong Liu 
6*f108662bSSong Liu char _license[] SEC("license") = "GPL";
7*f108662bSSong Liu 
8*f108662bSSong Liu struct callback_ctx {
9*f108662bSSong Liu 	int dummy;
10*f108662bSSong Liu };
11*f108662bSSong Liu 
write_task(struct task_struct * task,struct vm_area_struct * vma,struct callback_ctx * data)12*f108662bSSong Liu static long write_task(struct task_struct *task, struct vm_area_struct *vma,
13*f108662bSSong Liu 		       struct callback_ctx *data)
14*f108662bSSong Liu {
15*f108662bSSong Liu 	/* writing to task, which is illegal */
16*f108662bSSong Liu 	task->mm = NULL;
17*f108662bSSong Liu 
18*f108662bSSong Liu 	return 0;
19*f108662bSSong Liu }
20*f108662bSSong Liu 
21*f108662bSSong Liu SEC("raw_tp/sys_enter")
handle_getpid(void)22*f108662bSSong Liu int handle_getpid(void)
23*f108662bSSong Liu {
24*f108662bSSong Liu 	struct task_struct *task = bpf_get_current_task_btf();
25*f108662bSSong Liu 	struct callback_ctx data = {};
26*f108662bSSong Liu 
27*f108662bSSong Liu 	bpf_find_vma(task, 0, write_task, &data, 0);
28*f108662bSSong Liu 	return 0;
29*f108662bSSong Liu }
30