[PATCH 0/7] kprobe: Handle error when Kprobe ftrace arming fails

Petr Mladek
2015-02-26T16:13:08Z

arm_kprobe_ftrace() could fail, especially after introducing ftrace IPMODIFY
flag and LifePatching. This patch set adds the error handling and also some
related fixes.

1st patch includes the most important change. It helps to keep Kprobes
in a sane state.

2nd and 3rd patch allows to propagate the error where needed.

The other patches fix problems with the global kprobes_all_disarmed flag.
They were there even before but they become more visible and critical
after the arming errors became propagated.

The first patch looks rather safe and might be suitable even for 4.0.

However, I would feel more comfortable if the other patches get some
testing in linux-next. I did quite some testing and did my best. But
I started with the three patches and was surprised by the effect of
the propagated errors. They triggered that BUG_ON() in
__unregister_kprobe_top() are required the other patches
to get it working. I wonder if there is any other scenario that
I have missed.

Of course, I also wait for feedback how to make things better.

Petr Mladek (7):
kprobes: Disable Kprobe when ftrace arming fails
kprobes: Propagate error from arm_kprobe_ftrace()
kprobes: Propagate error from disarm_kprobe_ftrace()
kprobes: Keep consistent state of kprobes_all_disarmed
kprobes: Do not try to disarm already disarmed Kprobe
kprobes: Check kprobes_all_disarmed in kprobe_disarmed()
kprobes: Mark globally disabled Kprobes in debugfs interface

Documentation/kprobes.txt | 5 +-
kernel/kprobes.c | 279 ++++++++++++++++++++++++++++++++++------------
2 files changed, 213 insertions(+), 71 deletions(-)

--
1.8.5.6