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