--- v5
+++ v2
@@ -1,57 +1,74 @@
-Hi,
+Hi Josef and Alexei,
-Here are the 5th version of patches to moving error injection
-table from kprobes. This version fixes a bug and update
-fail-function to support multiple function error injection.
+Here are the 2nd version of patches to moving error injection
+table from kprobes. In this series I did a small fixes and
+add function-based fault injection.
Here is the previous version:
-https://patchwork.ozlabs.org/cover/858663/
+https://lkml.org/lkml/2017/12/22/554
-Changes in v5:
- - [3/5] Fix a bug that within_error_injection returns false always.
- - [5/5] Update to support multiple function error injection.
+There are 2 main reasons why I separate it from kprobes.
+
+ - kprobes users can modify execution path not only at
+ error-injection whitelist functions but also other
+ functions. I don't like to suggest user that such
+ limitation is from kprobes itself.
+
+ - This error injection information is also useful for
+ ftrace (function-hook) and livepatch. It should not
+ be limited by CONFIG_KPROBES.
+
+So I introduced CONFIG_FUNCTION_ERROR_INJECTION for this feature.
+Also CONFIG_FAIL_FUNCTION is added, which provides function-based
+error injection interface via debugfs following fault-injection
+framework. See [4/4].
+
+Any thoughts?
+
+BTW, I think we should add an error-range description in
+ALLOW_ERROR_INJECTION() macro. If user sets a success
+return value and override it by mistake, caller must
+break data or cause kernel panic.
Thank you,
---
-Masami Hiramatsu (5):
+Masami Hiramatsu (4):
tracing/kprobe: bpf: Check error injectable event is on function entry
tracing/kprobe: bpf: Compare instruction pointer with original one
error-injection: Separate error-injection from kprobe
- error-injection: Add injectable error types
error-injection: Support fault injection framework
- Documentation/fault-injection/fault-injection.txt | 68 ++++
+ Documentation/fault-injection/fault-injection.txt | 5 +
arch/Kconfig | 2
arch/x86/Kconfig | 2
- arch/x86/include/asm/error-injection.h | 13 +
- arch/x86/include/asm/kprobes.h | 4
+ arch/x86/include/asm/error-injection.h | 12 +
arch/x86/kernel/kprobes/ftrace.c | 14 -
- arch/x86/lib/Makefile | 1
- arch/x86/lib/error-inject.c | 19 +
- fs/btrfs/disk-io.c | 4
- fs/btrfs/free-space-cache.c | 4
- include/asm-generic/error-injection.h | 35 ++
- include/asm-generic/vmlinux.lds.h | 14 -
- include/linux/bpf.h | 11 -
- include/linux/error-injection.h | 27 ++
+ arch/x86/lib/Makefile | 2
+ arch/x86/lib/error-inject.c | 19 ++
+ fs/btrfs/disk-io.c | 2
+ fs/btrfs/free-space-cache.c | 2
+ include/asm-generic/error-injection.h | 20 ++
+ include/asm-generic/vmlinux.lds.h | 14 +
+ include/linux/bpf.h | 12 -
+ include/linux/error-injection.h | 21 ++
include/linux/kprobes.h | 1
- include/linux/module.h | 7
+ include/linux/module.h | 6 -
kernel/Makefile | 1
- kernel/fail_function.c | 349 +++++++++++++++++++++
- kernel/kprobes.c | 163 ----------
- kernel/module.c | 8
+ kernel/fail_function.c | 169 ++++++++++++++++++
+ kernel/kprobes.c | 163 -----------------
+ kernel/module.c | 8 -
kernel/trace/Kconfig | 4
- kernel/trace/bpf_trace.c | 11 -
- kernel/trace/trace_kprobe.c | 33 +-
- kernel/trace/trace_probe.h | 12 -
+ kernel/trace/bpf_trace.c | 9 -
+ kernel/trace/trace_kprobe.c | 32 +--
+ kernel/trace/trace_probe.h | 12 +
lib/Kconfig.debug | 14 +
lib/Makefile | 1
- lib/error-inject.c | 242 +++++++++++++++
- 27 files changed, 819 insertions(+), 245 deletions(-)
+ lib/error-inject.c | 198 +++++++++++++++++++++
+ 26 files changed, 506 insertions(+), 239 deletions(-)
create mode 100644 arch/x86/include/asm/error-injection.h
create mode 100644 arch/x86/lib/error-inject.c
create mode 100644 include/asm-generic/error-injection.h