lkml.org 
[lkml]   [2016]   [Jul]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/debug] x86/dumpstack: Honor supplied @regs arg
    Commit-ID:  ef16dd0c2a523d2e3975bb1bea9f5727e3e7146f
    Gitweb: http://git.kernel.org/tip/ef16dd0c2a523d2e3975bb1bea9f5727e3e7146f
    Author: Andy Lutomirski <luto@kernel.org>
    AuthorDate: Tue, 5 Jul 2016 00:31:25 +0200
    Committer: Ingo Molnar <mingo@kernel.org>
    CommitDate: Fri, 8 Jul 2016 11:33:18 +0200

    x86/dumpstack: Honor supplied @regs arg

    The comment suggests that show_stack(NULL, NULL) should backtrace the
    current context, but the code doesn't match the comment. If regs are
    given, start the "Stack:" hexdump at regs->sp.

    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1467671487-10344-2-git-send-email-bp@alien8.de
    Link: http://lkml.kernel.org/r/efcd79bf4106d61f1cd258c2caa87f3a0618eeac.1466036668.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    ---
    arch/x86/kernel/dumpstack_32.c | 4 +++-
    arch/x86/kernel/dumpstack_64.c | 4 +++-
    2 files changed, 6 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
    index fef917e..948d77d 100644
    --- a/arch/x86/kernel/dumpstack_32.c
    +++ b/arch/x86/kernel/dumpstack_32.c
    @@ -96,7 +96,9 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
    int i;

    if (sp == NULL) {
    - if (task)
    + if (regs)
    + sp = (unsigned long *)regs->sp;
    + else if (task)
    sp = (unsigned long *)task->thread.sp;
    else
    sp = (unsigned long *)&sp;
    diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
    index d558a8a..a81e1ef 100644
    --- a/arch/x86/kernel/dumpstack_64.c
    +++ b/arch/x86/kernel/dumpstack_64.c
    @@ -264,7 +264,9 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
    * back trace for this cpu:
    */
    if (sp == NULL) {
    - if (task)
    + if (regs)
    + sp = (unsigned long *)regs->sp;
    + else if (task)
    sp = (unsigned long *)task->thread.sp;
    else
    sp = (unsigned long *)&sp;
    \
     
     \ /
      Last update: 2016-07-08 14:41    [W:2.301 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site