diff options
author | Steven Rostedt (VMware) <[email protected]> | 2021-11-29 21:39:48 -0500 |
---|---|---|
committer | Steven Rostedt (VMware) <[email protected]> | 2021-12-06 15:37:22 -0500 |
commit | 3e8b1a29a0e8d300466cf2a23d2f6d41971c5a0c (patch) | |
tree | 0e10b6c048e49c8c03bf6c3c951f631bd9d81c99 | |
parent | 6c536d76cfe63b79e9e468ef0876315420a19074 (diff) |
tracing: Have eprobes use filtering logic of trace events
The eprobes open code the reserving of the event on the ring buffer for
ftrace instead of using the ftrace event wrappers, which means that it
doesn't get affected by the filters, breaking the filtering logic on user
space.
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
-rw-r--r-- | kernel/trace/trace_eprobe.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/kernel/trace/trace_eprobe.c b/kernel/trace/trace_eprobe.c index 928867f527e7..88487752d307 100644 --- a/kernel/trace/trace_eprobe.c +++ b/kernel/trace/trace_eprobe.c @@ -489,18 +489,12 @@ __eprobe_trace_func(struct eprobe_data *edata, void *rec) if (trace_trigger_soft_disabled(edata->file)) return; - fbuffer.trace_ctx = tracing_gen_ctx(); - fbuffer.trace_file = edata->file; - dsize = get_eprobe_size(&edata->ep->tp, rec); - fbuffer.regs = NULL; - - fbuffer.event = - trace_event_buffer_lock_reserve(&fbuffer.buffer, edata->file, - call->event.type, - sizeof(*entry) + edata->ep->tp.size + dsize, - fbuffer.trace_ctx); - if (!fbuffer.event) + + entry = trace_event_buffer_reserve(&fbuffer, edata->file, + sizeof(*entry) + edata->ep->tp.size + dsize); + + if (!entry) return; entry = fbuffer.entry = ring_buffer_event_data(fbuffer.event); |