sh: dump_stack: Fix broken lines and ptrval in calltrace dumps

Rejoin the broken lines by dropping the log level parameters and using
pr_cont().
Use "%px" to print sensible addresses in call traces.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Rich Felker <dalias@libc.org>
This commit is contained in:
Geert Uytterhoeven 2020-06-17 16:36:35 +02:00 committed by Rich Felker
parent 9b9fae8ba8
commit 0632a6d8c6

View File

@ -16,8 +16,8 @@
#include <asm/unwinder.h> #include <asm/unwinder.h>
#include <asm/stacktrace.h> #include <asm/stacktrace.h>
void dump_mem(const char *str, const char *loglvl, void dump_mem(const char *str, const char *loglvl, unsigned long bottom,
unsigned long bottom, unsigned long top) unsigned long top)
{ {
unsigned long p; unsigned long p;
int i; int i;
@ -31,23 +31,23 @@ void dump_mem(const char *str, const char *loglvl,
unsigned int val; unsigned int val;
if (p < bottom || p >= top) if (p < bottom || p >= top)
printk("%s ", loglvl); pr_cont(" ");
else { else {
if (__get_user(val, (unsigned int __user *)p)) { if (__get_user(val, (unsigned int __user *)p)) {
printk("%s\n", loglvl); pr_cont("\n");
return; return;
} }
printk("%s%08x ", loglvl, val); pr_cont("%08x ", val);
} }
} }
printk("%s\n", loglvl); pr_cont("\n");
} }
} }
void printk_address(unsigned long address, int reliable) void printk_address(unsigned long address, int reliable)
{ {
printk(" [<%p>] %s%pS\n", (void *) address, pr_cont(" [<%px>] %s%pS\n", (void *) address,
reliable ? "" : "? ", (void *) address); reliable ? "" : "? ", (void *) address);
} }
#ifdef CONFIG_FUNCTION_GRAPH_TRACER #ifdef CONFIG_FUNCTION_GRAPH_TRACER
@ -137,7 +137,7 @@ void show_trace(struct task_struct *tsk, unsigned long *sp,
unwind_stack(tsk, regs, sp, &print_trace_ops, (void *)loglvl); unwind_stack(tsk, regs, sp, &print_trace_ops, (void *)loglvl);
printk("%s\n", loglvl); pr_cont("\n");
if (!tsk) if (!tsk)
tsk = current; tsk = current;