netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH bpf-next v2 0/4] Separate error injection table from kprobes
@ 2017-12-26  7:46 Masami Hiramatsu
  2017-12-26  7:46 ` [RFC PATCH bpf-next v2 1/4] tracing/kprobe: bpf: Check error injectable event is on function entry Masami Hiramatsu
                   ` (4 more replies)
  0 siblings, 5 replies; 30+ messages in thread
From: Masami Hiramatsu @ 2017-12-26  7:46 UTC (permalink / raw)
  To: Alexei Starovoitov, Josef Bacik
  Cc: rostedt, mingo, davem, netdev, linux-kernel, ast, kernel-team,
	daniel, linux-btrfs, darrick.wong, mhiramat, Josef Bacik,
	Akinobu Mita

Hi Josef and Alexei,

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://lkml.org/lkml/2017/12/22/554

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 (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: Support fault injection framework


 Documentation/fault-injection/fault-injection.txt |    5 +
 arch/Kconfig                                      |    2 
 arch/x86/Kconfig                                  |    2 
 arch/x86/include/asm/error-injection.h            |   12 +
 arch/x86/kernel/kprobes/ftrace.c                  |   14 -
 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                            |    6 -
 kernel/Makefile                                   |    1 
 kernel/fail_function.c                            |  169 ++++++++++++++++++
 kernel/kprobes.c                                  |  163 -----------------
 kernel/module.c                                   |    8 -
 kernel/trace/Kconfig                              |    4 
 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                                |  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
 create mode 100644 include/linux/error-injection.h
 create mode 100644 kernel/fail_function.c
 create mode 100644 lib/error-inject.c

--
Masami Hiramatsu (Linaro)

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2018-01-09  1:17 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-26  7:46 [RFC PATCH bpf-next v2 0/4] Separate error injection table from kprobes Masami Hiramatsu
2017-12-26  7:46 ` [RFC PATCH bpf-next v2 1/4] tracing/kprobe: bpf: Check error injectable event is on function entry Masami Hiramatsu
2017-12-27  1:57   ` Alexei Starovoitov
2017-12-27  5:56     ` Masami Hiramatsu
2017-12-27 22:46       ` Alexei Starovoitov
2017-12-28  2:34         ` Masami Hiramatsu
2017-12-28  3:45           ` Alexei Starovoitov
2017-12-28  4:16             ` Steven Rostedt
2017-12-28  4:32               ` Alexei Starovoitov
2017-12-28  8:20                 ` Masami Hiramatsu
2017-12-29  1:03                   ` Alexei Starovoitov
2017-12-29  8:20                     ` Masami Hiramatsu
2018-01-08  3:01                       ` Alexei Starovoitov
2018-01-08 13:21                         ` Masami Hiramatsu
2017-12-28  7:56             ` Masami Hiramatsu
2017-12-26  7:47 ` [RFC PATCH bpf-next v2 2/4] tracing/kprobe: bpf: Compare instruction pointer with original one Masami Hiramatsu
2017-12-27  2:00   ` Alexei Starovoitov
2017-12-26  7:47 ` [RFC PATCH bpf-next v2 3/4] error-injection: Separate error-injection from kprobe Masami Hiramatsu
2017-12-27  2:07   ` Alexei Starovoitov
2017-12-26  7:48 ` [RFC PATCH bpf-next v2 4/4] error-injection: Support fault injection framework Masami Hiramatsu
2017-12-27  2:12   ` Alexei Starovoitov
2017-12-27  8:09     ` Masami Hiramatsu
2017-12-27 22:49       ` Alexei Starovoitov
2017-12-28  1:38         ` Masami Hiramatsu
2017-12-28  3:49           ` Alexei Starovoitov
2017-12-28  7:51             ` Masami Hiramatsu
2017-12-29  1:11               ` Alexei Starovoitov
2017-12-29  7:34                 ` Masami Hiramatsu
2018-01-04 16:07 ` [RFC PATCH bpf-next v2 0/4] Separate error injection table from kprobes Josef Bacik
2018-01-09  1:17   ` Masami Hiramatsu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).