On Wed, 22 Nov 2017 16:23:30 -0500
Josef Bacik [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Josef Bacik <redacted>
Using BPF we can override kprob'ed functions and return arbitrary
values. Obviously this can be a bit unsafe, so make this feature opt-in
for functions. Simply tag a function with KPROBE_ERROR_INJECT_SYMBOL in
order to give BPF access to that function for error injection purposes.
Signed-off-by: Josef Bacik <redacted>
Acked-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/include/asm/asm.h | 6 ++
include/asm-generic/vmlinux.lds.h | 10 +++
include/linux/bpf.h | 11 +++
include/linux/kprobes.h | 1 +
include/linux/module.h | 5 ++
kernel/kprobes.c | 163 ++++++++++++++++++++++++++++++++++++++
kernel/module.c | 6 +-
7 files changed, 201 insertions(+), 1 deletion(-)
diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
index b0dc91f4bedc..340f4cc43255 100644
--- a/arch/x86/include/asm/asm.h
+++ b/arch/x86/include/asm/asm.h
@@ -85,6 +85,12 @@
_ASM_PTR (entry); \
.popsection
+# define _ASM_KPROBE_ERROR_INJECT(entry) \
+ .pushsection "_kprobe_error_inject_list","aw" ; \
+ _ASM_ALIGN ; \
+ _ASM_PTR (entry); \
+ .popseciton
So this stuff is not my area of greatest expertise, but I do have to wonder
how ".popseciton" can work ... ?
Thanks,
jon