lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 13 Aug 2014 00:57:29 -0700 From: Alexei Starovoitov <ast@...mgrid.com> To: "David S. Miller" <davem@...emloft.net> Cc: Ingo Molnar <mingo@...nel.org>, Linus Torvalds <torvalds@...ux-foundation.org>, Andy Lutomirski <luto@...capital.net>, Steven Rostedt <rostedt@...dmis.org>, Daniel Borkmann <dborkman@...hat.com>, Chema Gonzalez <chema@...gle.com>, Eric Dumazet <edumazet@...gle.com>, Peter Zijlstra <a.p.zijlstra@...llo.nl>, "H. Peter Anvin" <hpa@...or.com>, Andrew Morton <akpm@...ux-foundation.org>, Kees Cook <keescook@...omium.org>, linux-api@...r.kernel.org, netdev@...r.kernel.org, linux-kernel@...r.kernel.org Subject: [PATCH RFC v4 net-next 18/26] tracing: allow eBPF programs to be attached to kprobe/kretprobe Signed-off-by: Alexei Starovoitov <ast@...mgrid.com> --- kernel/trace/trace_kprobe.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index 282f6e4e5539..a71e3d521938 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c @@ -19,6 +19,7 @@ #include <linux/module.h> #include <linux/uaccess.h> +#include <trace/bpf_trace.h> #include "trace_probe.h" @@ -930,6 +931,18 @@ __kprobe_trace_func(struct trace_kprobe *tk, struct pt_regs *regs, if (ftrace_trigger_soft_disabled(ftrace_file)) return; + if (call->flags & TRACE_EVENT_FL_BPF) { + struct bpf_context __ctx = {}; + /* get first 3 arguments of the function. x64 syscall ABI uses + * the same 3 registers as x64 calling convention. + * todo: implement it cleanly via arch specific + * regs_get_argument_nth() helper + */ + syscall_get_arguments(current, regs, 0, 3, &__ctx.arg1); + trace_filter_call_bpf(ftrace_file->filter, &__ctx); + return; + } + local_save_flags(irq_flags); pc = preempt_count(); @@ -978,6 +991,17 @@ __kretprobe_trace_func(struct trace_kprobe *tk, struct kretprobe_instance *ri, if (ftrace_trigger_soft_disabled(ftrace_file)) return; + if (call->flags & TRACE_EVENT_FL_BPF) { + struct bpf_context __ctx = {}; + /* assume that register used to return a value from syscall is + * the same as register used to return a value from a function + * todo: provide arch specific helper + */ + __ctx.ret = syscall_get_return_value(current, regs); + trace_filter_call_bpf(ftrace_file->filter, &__ctx); + return; + } + local_save_flags(irq_flags); pc = preempt_count(); -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists