Linux Audio

Check our new training course

Loading...
v6.13.7
  1// SPDX-License-Identifier: GPL-2.0
  2/* Copyright (c) 2020 Facebook */
  3
  4#include "vmlinux.h"
  5#include <bpf/bpf_helpers.h>
  6#include <bpf/bpf_tracing.h>
  7#include <bpf/bpf_core_read.h>
  8#include "../bpf_testmod/bpf_testmod.h"
  9
 10__u32 raw_tp_read_sz = 0;
 11
 12SEC("raw_tp/bpf_testmod_test_read")
 13int BPF_PROG(handle_raw_tp,
 14	     struct task_struct *task, struct bpf_testmod_test_read_ctx *read_ctx)
 15{
 16	raw_tp_read_sz = BPF_CORE_READ(read_ctx, len);
 17	return 0;
 18}
 19
 20__u32 raw_tp_bare_write_sz = 0;
 21
 22SEC("raw_tp/bpf_testmod_test_write_bare")
 23int BPF_PROG(handle_raw_tp_bare,
 24	     struct task_struct *task, struct bpf_testmod_test_write_ctx *write_ctx)
 25{
 26	raw_tp_bare_write_sz = BPF_CORE_READ(write_ctx, len);
 27	return 0;
 28}
 29
 30int raw_tp_writable_bare_in_val = 0;
 31int raw_tp_writable_bare_early_ret = 0;
 32int raw_tp_writable_bare_out_val = 0;
 33
 34SEC("raw_tp.w/bpf_testmod_test_writable_bare")
 35int BPF_PROG(handle_raw_tp_writable_bare,
 36	     struct bpf_testmod_test_writable_ctx *writable)
 37{
 38	raw_tp_writable_bare_in_val = writable->val;
 39	writable->early_ret = raw_tp_writable_bare_early_ret;
 40	writable->val = raw_tp_writable_bare_out_val;
 41	return 0;
 42}
 43
 44__u32 tp_btf_read_sz = 0;
 45
 46SEC("tp_btf/bpf_testmod_test_read")
 47int BPF_PROG(handle_tp_btf,
 48	     struct task_struct *task, struct bpf_testmod_test_read_ctx *read_ctx)
 49{
 50	tp_btf_read_sz = read_ctx->len;
 51	return 0;
 52}
 53
 54__u32 fentry_read_sz = 0;
 55
 56SEC("fentry/bpf_testmod_test_read")
 57int BPF_PROG(handle_fentry,
 58	     struct file *file, struct kobject *kobj,
 59	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
 60{
 61	fentry_read_sz = len;
 62	return 0;
 63}
 64
 65__u32 fentry_manual_read_sz = 0;
 66
 67SEC("fentry")
 68int BPF_PROG(handle_fentry_manual,
 69	     struct file *file, struct kobject *kobj,
 70	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
 71{
 72	fentry_manual_read_sz = len;
 73	return 0;
 74}
 75
 76__u32 fentry_explicit_read_sz = 0;
 77
 78SEC("fentry/bpf_testmod:bpf_testmod_test_read")
 79int BPF_PROG(handle_fentry_explicit,
 80	     struct file *file, struct kobject *kobj,
 81	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
 82{
 83	fentry_explicit_read_sz = len;
 84	return 0;
 85}
 86
 87
 88__u32 fentry_explicit_manual_read_sz = 0;
 89
 90SEC("fentry")
 91int BPF_PROG(handle_fentry_explicit_manual,
 92	     struct file *file, struct kobject *kobj,
 93	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
 94{
 95	fentry_explicit_manual_read_sz = len;
 96	return 0;
 97}
 98
 99__u32 fexit_read_sz = 0;
100int fexit_ret = 0;
101
102SEC("fexit/bpf_testmod_test_read")
103int BPF_PROG(handle_fexit,
104	     struct file *file, struct kobject *kobj,
105	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len,
106	     int ret)
107{
108	fexit_read_sz = len;
109	fexit_ret = ret;
110	return 0;
111}
112
113SEC("fexit/bpf_testmod_return_ptr")
114int BPF_PROG(handle_fexit_ret, int arg, struct file *ret)
115{
116	long buf = 0;
117
118	bpf_probe_read_kernel(&buf, 8, ret);
119	bpf_probe_read_kernel(&buf, 8, (char *)ret + 256);
120	*(volatile long long *)ret;
121	*(volatile int *)&ret->f_mode;
122	return 0;
123}
124
125__u32 fmod_ret_read_sz = 0;
126
127SEC("fmod_ret/bpf_testmod_test_read")
128int BPF_PROG(handle_fmod_ret,
129	     struct file *file, struct kobject *kobj,
130	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
131{
132	fmod_ret_read_sz = len;
133	return 0; /* don't override the exit code */
134}
135
136SEC("kprobe.multi/bpf_testmod_test_read")
137int BPF_PROG(kprobe_multi)
138{
139	return 0;
140}
141
142char _license[] SEC("license") = "GPL";
v6.8
  1// SPDX-License-Identifier: GPL-2.0
  2/* Copyright (c) 2020 Facebook */
  3
  4#include "vmlinux.h"
  5#include <bpf/bpf_helpers.h>
  6#include <bpf/bpf_tracing.h>
  7#include <bpf/bpf_core_read.h>
  8#include "../bpf_testmod/bpf_testmod.h"
  9
 10__u32 raw_tp_read_sz = 0;
 11
 12SEC("raw_tp/bpf_testmod_test_read")
 13int BPF_PROG(handle_raw_tp,
 14	     struct task_struct *task, struct bpf_testmod_test_read_ctx *read_ctx)
 15{
 16	raw_tp_read_sz = BPF_CORE_READ(read_ctx, len);
 17	return 0;
 18}
 19
 20__u32 raw_tp_bare_write_sz = 0;
 21
 22SEC("raw_tp/bpf_testmod_test_write_bare")
 23int BPF_PROG(handle_raw_tp_bare,
 24	     struct task_struct *task, struct bpf_testmod_test_write_ctx *write_ctx)
 25{
 26	raw_tp_bare_write_sz = BPF_CORE_READ(write_ctx, len);
 27	return 0;
 28}
 29
 30int raw_tp_writable_bare_in_val = 0;
 31int raw_tp_writable_bare_early_ret = 0;
 32int raw_tp_writable_bare_out_val = 0;
 33
 34SEC("raw_tp.w/bpf_testmod_test_writable_bare")
 35int BPF_PROG(handle_raw_tp_writable_bare,
 36	     struct bpf_testmod_test_writable_ctx *writable)
 37{
 38	raw_tp_writable_bare_in_val = writable->val;
 39	writable->early_ret = raw_tp_writable_bare_early_ret;
 40	writable->val = raw_tp_writable_bare_out_val;
 41	return 0;
 42}
 43
 44__u32 tp_btf_read_sz = 0;
 45
 46SEC("tp_btf/bpf_testmod_test_read")
 47int BPF_PROG(handle_tp_btf,
 48	     struct task_struct *task, struct bpf_testmod_test_read_ctx *read_ctx)
 49{
 50	tp_btf_read_sz = read_ctx->len;
 51	return 0;
 52}
 53
 54__u32 fentry_read_sz = 0;
 55
 56SEC("fentry/bpf_testmod_test_read")
 57int BPF_PROG(handle_fentry,
 58	     struct file *file, struct kobject *kobj,
 59	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
 60{
 61	fentry_read_sz = len;
 62	return 0;
 63}
 64
 65__u32 fentry_manual_read_sz = 0;
 66
 67SEC("fentry")
 68int BPF_PROG(handle_fentry_manual,
 69	     struct file *file, struct kobject *kobj,
 70	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
 71{
 72	fentry_manual_read_sz = len;
 73	return 0;
 74}
 75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 76__u32 fexit_read_sz = 0;
 77int fexit_ret = 0;
 78
 79SEC("fexit/bpf_testmod_test_read")
 80int BPF_PROG(handle_fexit,
 81	     struct file *file, struct kobject *kobj,
 82	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len,
 83	     int ret)
 84{
 85	fexit_read_sz = len;
 86	fexit_ret = ret;
 87	return 0;
 88}
 89
 90SEC("fexit/bpf_testmod_return_ptr")
 91int BPF_PROG(handle_fexit_ret, int arg, struct file *ret)
 92{
 93	long buf = 0;
 94
 95	bpf_probe_read_kernel(&buf, 8, ret);
 96	bpf_probe_read_kernel(&buf, 8, (char *)ret + 256);
 97	*(volatile long long *)ret;
 98	*(volatile int *)&ret->f_mode;
 99	return 0;
100}
101
102__u32 fmod_ret_read_sz = 0;
103
104SEC("fmod_ret/bpf_testmod_test_read")
105int BPF_PROG(handle_fmod_ret,
106	     struct file *file, struct kobject *kobj,
107	     struct bin_attribute *bin_attr, char *buf, loff_t off, size_t len)
108{
109	fmod_ret_read_sz = len;
110	return 0; /* don't override the exit code */
111}
112
113SEC("kprobe.multi/bpf_testmod_test_read")
114int BPF_PROG(kprobe_multi)
115{
116	return 0;
117}
118
119char _license[] SEC("license") = "GPL";