lkml.org 
[lkml]   [2014]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/kprobes] kprobes, x86: Prohibit probing on thunk functions and restore
    Commit-ID:  98def1dedd00f42ded8423c418c971751f46aad2
    Gitweb: http://git.kernel.org/tip/98def1dedd00f42ded8423c418c971751f46aad2
    Author: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    AuthorDate: Thu, 17 Apr 2014 17:17:26 +0900
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Thu, 24 Apr 2014 10:02:58 +0200

    kprobes, x86: Prohibit probing on thunk functions and restore

    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 | 3 ++-
    arch/x86/lib/thunk_64.S | 3 +++
    2 files changed, 5 insertions(+), 1 deletion(-)

    diff --git a/arch/x86/lib/thunk_32.S b/arch/x86/lib/thunk_32.S
    index 2930ae0..28f85c91 100644
    --- a/arch/x86/lib/thunk_32.S
    +++ b/arch/x86/lib/thunk_32.S
    @@ -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
    diff --git a/arch/x86/lib/thunk_64.S b/arch/x86/lib/thunk_64.S
    index a63efd6..92d9fea 100644
    --- a/arch/x86/lib/thunk_64.S
    +++ b/arch/x86/lib/thunk_64.S
    @@ -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)

    \
     
     \ /
      Last update: 2014-04-28 00:01    [W:4.051 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site