xtensa: improve stack dumping
Calculate printable stack size and use print_hex_dump instead of opencoding it. Drop extra newline output in show_trace as its output format does not depend on CONFIG_KALLSYMS. Reviewed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
5eff6ca2e3
commit
c5fccebc13
|
@ -491,32 +491,27 @@ void show_trace(struct task_struct *task, unsigned long *sp)
|
|||
|
||||
pr_info("Call Trace:\n");
|
||||
walk_stackframe(sp, show_trace_cb, NULL);
|
||||
#ifndef CONFIG_KALLSYMS
|
||||
pr_cont("\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
static int kstack_depth_to_print = 24;
|
||||
#define STACK_DUMP_ENTRY_SIZE 4
|
||||
#define STACK_DUMP_LINE_SIZE 32
|
||||
static size_t kstack_depth_to_print = 24;
|
||||
|
||||
void show_stack(struct task_struct *task, unsigned long *sp)
|
||||
{
|
||||
int i = 0;
|
||||
unsigned long *stack;
|
||||
size_t len;
|
||||
|
||||
if (!sp)
|
||||
sp = stack_pointer(task);
|
||||
stack = sp;
|
||||
|
||||
len = min((-(size_t)sp) & (THREAD_SIZE - STACK_DUMP_ENTRY_SIZE),
|
||||
kstack_depth_to_print * STACK_DUMP_ENTRY_SIZE);
|
||||
|
||||
pr_info("Stack:\n");
|
||||
|
||||
for (i = 0; i < kstack_depth_to_print; i++) {
|
||||
if (kstack_end(sp))
|
||||
break;
|
||||
pr_cont(" %08lx", *sp++);
|
||||
if (i % 8 == 7)
|
||||
pr_cont("\n");
|
||||
}
|
||||
show_trace(task, stack);
|
||||
print_hex_dump(KERN_INFO, " ", DUMP_PREFIX_NONE,
|
||||
STACK_DUMP_LINE_SIZE, STACK_DUMP_ENTRY_SIZE,
|
||||
sp, len, false);
|
||||
show_trace(task, sp);
|
||||
}
|
||||
|
||||
DEFINE_SPINLOCK(die_lock);
|
||||
|
|
Loading…
Reference in New Issue