• Torok Edwin's avatar
    perf, x86: Fix callgraphs of 32-bit processes on 64-bit kernels · 257ef9d2
    Torok Edwin authored
    When profiling a 32-bit process on a 64-bit kernel, callgraph tracing
    stopped after the first function, because it has seen a garbage memory
    address (tried to interpret the frame pointer, and return address as a
    64-bit pointer).
    
    Fix this by using a struct stack_frame with 32-bit pointers when the
    TIF_IA32 flag is set.
    
    Note that TIF_IA32 flag must be used, and not is_compat_task(), because
    the latter is only set when the 32-bit process is executing a syscall,
    which may not always be the case (when tracing page fault events for
    example).
    Signed-off-by: default avatarTörök Edwin <edwintorok@gmail.com>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: x86@kernel.org
    Cc: linux-kernel@vger.kernel.org
    LKML-Reference: <1268820436-13145-1-git-send-email-edwintorok@gmail.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    257ef9d2
dumpstack.h 1.09 KB