kprobes: Remove NMI context check
authorMasami Hiramatsu <mhiramat@kernel.org>
Sat, 29 Aug 2020 13:02:36 +0000 (22:02 +0900)
committerIngo Molnar <mingo@kernel.org>
Tue, 8 Sep 2020 09:52:35 +0000 (11:52 +0200)
commite03b4a084ea6b0a18b0e874baec439e69090c168
tree7648ae43bbe8a8f8ea2f1cd716043d1a1f04bb6a
parent5e96ce8ae5b1428e6f4953be5fb1daf0a6d18426
kprobes: Remove NMI context check

The in_nmi() check in pre_handler_kretprobe() is meant to avoid
recursion, and blindly assumes that anything NMI is recursive.

However, since commit:

  9b38cc704e84 ("kretprobe: Prevent triggering kretprobe from within kprobe_flush_task")

there is a better way to detect and avoid actual recursion.

By setting a dummy kprobe, any actual exceptions will terminate early
(by trying to handle the dummy kprobe), and recursion will not happen.

Employ this to avoid the kretprobe_table_lock() recursion, replacing
the over-eager in_nmi() check.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/159870615628.1229682.6087311596892125907.stgit@devnote2
kernel/kprobes.c