kprobes, x86: Prohibit probing on thunk functions and restore
authorMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thu, 17 Apr 2014 08:17:26 +0000 (17:17 +0900)
committerIngo Molnar <mingo@kernel.org>
Thu, 24 Apr 2014 08:02:58 +0000 (10:02 +0200)
thunk/restore functions are also used for tracing irqoff etc.
and those are involved in kprobe's exception handling.
Prohibit probing on them to avoid kernel crash.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/20140417081726.26341.3872.stgit@ltc230.yrl.intra.hitachi.co.jp
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/lib/thunk_32.S
arch/x86/lib/thunk_64.S

index 2930ae05d77305a3c3f76b821f843203969ffb2b..28f85c916712232e951f30a0e9819b56357a87a9 100644 (file)
@@ -4,8 +4,8 @@
  *  (inspired by Andi Kleen's thunk_64.S)
  * Subject to the GNU public license, v.2. No warranty of any kind.
  */
-
        #include <linux/linkage.h>
+       #include <asm/asm.h>
 
 #ifdef CONFIG_TRACE_IRQFLAGS
        /* put return address in eax (arg1) */
@@ -22,6 +22,7 @@
        popl %ecx
        popl %eax
        ret
+       _ASM_NOKPROBE(\name)
        .endm
 
        thunk_ra trace_hardirqs_on_thunk,trace_hardirqs_on_caller
index a63efd6bb6a5a24e9553abc8aef18e198be0953f..92d9feaff42b04fa0dd42f1c1f686cf3a43e7636 100644 (file)
@@ -8,6 +8,7 @@
 #include <linux/linkage.h>
 #include <asm/dwarf2.h>
 #include <asm/calling.h>
+#include <asm/asm.h>
 
        /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
        .macro THUNK name, func, put_ret_addr_in_rdi=0
@@ -25,6 +26,7 @@
        call \func
        jmp  restore
        CFI_ENDPROC
+       _ASM_NOKPROBE(\name)
        .endm
 
 #ifdef CONFIG_TRACE_IRQFLAGS
@@ -43,3 +45,4 @@ restore:
        RESTORE_ARGS
        ret
        CFI_ENDPROC
+       _ASM_NOKPROBE(restore)