aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/bpf_trace.c
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@plumgrid.com>2015-06-12 22:39:13 -0400
committerDavid S. Miller <davem@davemloft.net>2015-06-15 18:53:50 -0400
commit0756ea3e85139d23a8148ebaa95411c2f0aa4f11 (patch)
tree16b702c8ca6da39fc16188f3bf767d238df8b5ff /kernel/trace/bpf_trace.c
parentffeedafbf0236f03aeb2e8db273b3e5ae5f5bc89 (diff)
bpf: allow networking programs to use bpf_trace_printk() for debugging
bpf_trace_printk() is a helper function used to debug eBPF programs. Let socket and TC programs use it as well. Note, it's DEBUG ONLY helper. If it's used in the program, the kernel will print warning banner to make sure users don't use it in production. Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/trace/bpf_trace.c')
-rw-r--r--kernel/trace/bpf_trace.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 3a17638cdf46..4f9b5d41869b 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -147,6 +147,17 @@ static const struct bpf_func_proto bpf_trace_printk_proto = {
147 .arg2_type = ARG_CONST_STACK_SIZE, 147 .arg2_type = ARG_CONST_STACK_SIZE,
148}; 148};
149 149
150const struct bpf_func_proto *bpf_get_trace_printk_proto(void)
151{
152 /*
153 * this program might be calling bpf_trace_printk,
154 * so allocate per-cpu printk buffers
155 */
156 trace_printk_init_buffers();
157
158 return &bpf_trace_printk_proto;
159}
160
150static const struct bpf_func_proto *kprobe_prog_func_proto(enum bpf_func_id func_id) 161static const struct bpf_func_proto *kprobe_prog_func_proto(enum bpf_func_id func_id)
151{ 162{
152 switch (func_id) { 163 switch (func_id) {
@@ -168,15 +179,8 @@ static const struct bpf_func_proto *kprobe_prog_func_proto(enum bpf_func_id func
168 return &bpf_get_current_uid_gid_proto; 179 return &bpf_get_current_uid_gid_proto;
169 case BPF_FUNC_get_current_comm: 180 case BPF_FUNC_get_current_comm:
170 return &bpf_get_current_comm_proto; 181 return &bpf_get_current_comm_proto;
171
172 case BPF_FUNC_trace_printk: 182 case BPF_FUNC_trace_printk:
173 /* 183 return bpf_get_trace_printk_proto();
174 * this program might be calling bpf_trace_printk,
175 * so allocate per-cpu printk buffers
176 */
177 trace_printk_init_buffers();
178
179 return &bpf_trace_printk_proto;
180 default: 184 default:
181 return NULL; 185 return NULL;
182 } 186 }