x86/kprobes: Use int3 instead of debug trap for single-step
Use int3 instead of debug trap exception for single-stepping the probed instructions. Some instructions which change the ip registers or modify IF flags are emulated because those are not able to be single-stepped by int3 or may allow the interrupt while single-stepping. This actually changes the kprobes behavior. - kprobes can not probe following instructions; int3, iret, far jmp/call which get absolute address as immediate, indirect far jmp/call, indirect near jmp/call with addressing by memory (register-based indirect jmp/call are OK), and vmcall/vmlaunch/vmresume/vmxoff. - If the kprobe post_handler doesn't set before registering, it may not be called in some case even if you set it afterwards. (IOW, kprobe booster is enabled at registration, user can not change it) But both are rare issue, unsupported instructions will not be used in the kernel (or rarely used), and post_handlers are rarely used (I don't see it except for the test code). Suggested-by: Andy Lutomirski <luto@kernel.org> Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/161469874601.49483.11985325887166921076.stgit@devnote2
parent
a194acd3
-
mentioned in commit dec8784c
-
mentioned in commit 1cbf3882
-
mentioned in commit 8924779d
-
mentioned in commit ba7d1dae
-
mentioned in commit 2b5afe25
-
mentioned in commit edc2ac7c
-
mentioned in commit f07f3938
-
mentioned in commit 058c0cbd
-
mentioned in commit f5d03da4
-
mentioned in commit 53b42cb3
-
mentioned in commit dfb8a426
-
mentioned in commit 0ba8c7ef
-
mentioned in commit 1d5c1617
Please register or sign in to comment