Messages in this thread Patch in this message | | | From | He Kuang <> | Subject | [RFC PATCH 2/5] bpf: Pass trace_probe to bpf_prog for variable fetching | Date | Mon, 18 May 2015 05:30:44 +0000 |
| |
Add new structure bpf_pt_regs, which contains both original 'ctx'(pt_regs) and trabe_probe pointer, and pass this new pointer to bpf prog for variable fetching.
Signed-off-by: He Kuang <hekuang@huawei.com> --- kernel/trace/trace_kprobe.c | 11 +++++++++-- kernel/trace/trace_probe.h | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index d0ce590..cee0b28 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c @@ -1141,8 +1141,15 @@ kprobe_perf_func(struct trace_kprobe *tk, struct pt_regs *regs) int size, __size, dsize; int rctx; - if (prog && !trace_call_bpf(prog, regs)) - return; + if (prog) { + struct bpf_pt_regs bpf_pt_regs; + + bpf_pt_regs.pt_regs = *regs; + bpf_pt_regs.tp = &tk->tp; + + if (!trace_call_bpf(prog, &bpf_pt_regs)) + return; + } head = this_cpu_ptr(call->perf_events); if (hlist_empty(head)) diff --git a/kernel/trace/trace_probe.h b/kernel/trace/trace_probe.h index ab283e1..5b1f12c 100644 --- a/kernel/trace/trace_probe.h +++ b/kernel/trace/trace_probe.h @@ -391,4 +391,9 @@ store_trace_args(int ent_size, struct trace_probe *tp, struct pt_regs *regs, } } +struct bpf_pt_regs { + struct pt_regs pt_regs; + struct trace_probe *tp; +}; + extern int set_print_fmt(struct trace_probe *tp, bool is_return); -- 1.8.5.2
| |