1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2021 Google */
3 
4 #include "vmlinux.h"
5 
6 #include <bpf/bpf_helpers.h>
7 
8 extern const int bpf_prog_active __ksym; /* int type global var. */
9 
10 SEC("raw_tp/sys_enter")
11 int handler(const void *ctx)
12 {
13 	int *active;
14 	__u32 cpu;
15 
16 	cpu = bpf_get_smp_processor_id();
17 	active = (int *)bpf_per_cpu_ptr(&bpf_prog_active, cpu);
18 	if (active) {
19 		/* Kernel memory obtained from bpf_{per,this}_cpu_ptr
20 		 * is read-only, should _not_ pass verification.
21 		 */
22 		/* WRITE_ONCE */
23 		*(volatile int *)active = -1;
24 	}
25 
26 	return 0;
27 }
28 
29 char _license[] SEC("license") = "GPL";
30