• Vasily Gorbik's avatar
    s390/ftrace: generate traced function stack frame · bfcb4626
    Vasily Gorbik authored
    [ Upstream commit 45f7a0da ]
    
    Currently backtrace from ftraced function does not contain ftraced
    function itself. e.g. for "path_openat":
    
    arch_stack_walk+0x15c/0x2d8
    stack_trace_save+0x50/0x68
    stack_trace_call+0x15e/0x3d8
    ftrace_graph_caller+0x0/0x1c <-- ftrace code
    do_filp_open+0x7c/0xe8 <-- ftraced function caller
    do_open_execat+0x76/0x1b8
    open_exec+0x52/0x78
    load_elf_binary+0x180/0x1160
    search_binary_handler+0x8e/0x288
    load_script+0x2a8/0x2b8
    search_binary_handler+0x8e/0x288
    __do_execve_file.isra.39+0x6fa/0xb40
    __s390x_sys_execve+0x56/0x68
    system_call+0xdc/0x2d8
    
    Ftraced function is expected in the backtrace by ftrace kselftests, which
    are now failing. It would also be nice to have it for clarity reasons.
    
    "ftrace_caller" itself is called without stack frame allocated for it
    and does not store its caller (ftraced function). Instead it simply
    allocates a stack frame for "ftrace_trace_function" and sets backchain
    to point to ftraced function stack frame (which contains ftraced function
    caller in saved r14).
    
    To fix this issue make "ftrace_caller" allocate a stack frame
    for itself just to store ftraced function for the stack unwinder.
    As a result backtrace looks like the following:
    
    arch_stack_walk+0x15c/0x2d8
    stack_trace_save+0x50/0x68
    stack_trace_call+0x15e/0x3d8
    ftrace_graph_caller+0x0/0x1c <-- ftrace code
    path_openat+0x6/0xd60  <-- ftraced function
    do_filp_open+0x7c/0xe8 <-- ftraced function caller
    do_open_execat+0x76/0x1b8
    open_exec+0x52/0x78
    load_elf_binary+0x180/0x1160
    search_binary_handler+0x8e/0x288
    load_script+0x2a8/0x2b8
    search_binary_handler+0x8e/0x288
    __do_execve_file.isra.39+0x6fa/0xb40
    __s390x_sys_execve+0x56/0x68
    system_call+0xdc/0x2d8
    Reported-by: default avatarSven Schnelle <sven.schnelle@ibm.com>
    Tested-by: default avatarSven Schnelle <sven.schnelle@ibm.com>
    Reviewed-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
    bfcb4626
mcount.S 2.5 KB