lkml.org 
[lkml]   [2015]   [Oct]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v14 18/24] x86/asm/entry: Create stack frames in thunk functions
    Date
    Thunk functions are callable non-leaf functions that don't honor
    CONFIG_FRAME_POINTER, which can result in bad stack traces. Also they
    aren't annotated as ELF callable functions which can confuse tooling.

    Create stack frames for them when CONFIG_FRAME_POINTER is enabled and
    add the ELF function type.

    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    ---
    arch/x86/entry/thunk_64.S | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/arch/x86/entry/thunk_64.S b/arch/x86/entry/thunk_64.S
    index efb2b93..98df1fa 100644
    --- a/arch/x86/entry/thunk_64.S
    +++ b/arch/x86/entry/thunk_64.S
    @@ -8,11 +8,14 @@
    #include <linux/linkage.h>
    #include "calling.h"
    #include <asm/asm.h>
    +#include <asm/frame.h>

    /* rdi: arg1 ... normal C conventions. rax is saved/restored. */
    .macro THUNK name, func, put_ret_addr_in_rdi=0
    .globl \name
    + .type \name, @function
    \name:
    + FRAME_BEGIN

    /* this one pushes 9 elems, the next one would be %rIP */
    pushq %rdi
    @@ -62,6 +65,7 @@ restore:
    popq %rdx
    popq %rsi
    popq %rdi
    + FRAME_END
    ret
    _ASM_NOKPROBE(restore)
    #endif
    --
    2.4.3


    \
     
     \ /
      Last update: 2015-10-21 18:21    [W:3.789 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site