lkml.org 
[lkml]   [2013]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH -tip v5 05/18] [BUGFIX] x86: Prohibit probing on thunk functions and restore
    From
    Date
    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>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    ---
    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: 2013-12-09 12:21    [W:4.131 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site