FILE
struct_ops_refcounted.c
File preview with syntax highlighting.
linux-6.19.14/tools/testing/selftests/bpf/progs/struct_ops_refcounted.c
1#include <vmlinux.h> 2#include <bpf/bpf_tracing.h> 3#include "../test_kmods/bpf_testmod.h" 4#include "bpf_misc.h" 5 6char _license[] SEC("license") = "GPL"; 7 8__attribute__((nomerge)) extern void bpf_task_release(struct task_struct *p) __ksym; 9 10/* This is a test BPF program that uses struct_ops to access a referenced 11 * kptr argument. This is a test for the verifier to ensure that it 12 * 1) recognizes the task as a referenced object (i.e., ref_obj_id > 0), and 13 * 2) the same reference can be acquired from multiple paths as long as it 14 * has not been released. 15 */ 16SEC("struct_ops/test_refcounted") 17int BPF_PROG(refcounted, int dummy, struct task_struct *task) 18{ 19 if (dummy == 1) 20 bpf_task_release(task); 21 else 22 bpf_task_release(task); 23 return 0; 24} 25 26SEC(".struct_ops.link") 27struct bpf_testmod_ops testmod_refcounted = { 28 .test_refcounted = (void *)refcounted, 29}; 30 31
~/
Read-only file preview.