Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1598564 > unrolled thread
| Started by | Vegard Nossum <vegard.nossum@oracle.com> |
|---|---|
| First post | 2017-03-12 10:40 +0100 |
| Last post | 2017-03-12 10:50 +0100 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] um: use KERN_CONT in stack dump Vegard Nossum <vegard.nossum@oracle.com> - 2017-03-12 10:40 +0100
Re: [PATCH] um: use KERN_CONT in stack dump Vegard Nossum <vegard.nossum@oracle.com> - 2017-03-12 10:50 +0100
Re: [PATCH] um: use KERN_CONT in stack dump Richard Weinberger <richard@nod.at> - 2017-03-12 10:50 +0100
| From | Vegard Nossum <vegard.nossum@oracle.com> |
|---|---|
| Date | 2017-03-12 10:40 +0100 |
| Subject | [PATCH] um: use KERN_CONT in stack dump |
| Message-ID | <tk88O-7Y2-13@gated-at.bofh.it> |
Without KERN_CONT, the symbol will appear on a new line, making stack
traces completely unreadable:
Call Trace:
[<6008e891>] ?
printk+0x0/0x94
[<6001cce6>]
show_stack+0xfe/0x15b
[<600666ec>] ?
dump_stack_print_info+0xe1/0xea
[<6008e891>] ?
printk+0x0/0x94
[<6023e826>] ?
bust_spinlocks+0x0/0x4f
[<602343b8>]
dump_stack+0x2a/0x2c
[<6008e662>]
panic+0x170/0x31e
[<6008e4f2>] ?
panic+0x0/0x31e
This makes it readable again:
Call Trace:
[<6008e891>] ? printk+0x0/0x94
[<6001cce6>] show_stack+0xfe/0x15b
[<600666ec>] ? dump_stack_print_info+0xe1/0xea
[<6008e891>] ? printk+0x0/0x94
[<6023e826>] ? bust_spinlocks+0x0/0x4f
[<602343b8>] dump_stack+0x2a/0x2c
[<6008e662>] panic+0x170/0x31e
Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
---
arch/um/kernel/sysrq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c
index a76295f7ede9..edf1f80123e7 100644
--- a/arch/um/kernel/sysrq.c
+++ b/arch/um/kernel/sysrq.c
@@ -22,7 +22,7 @@ static void _print_addr(void *data, unsigned long address, int reliable)
{
pr_info(" [<%08lx>]", address);
pr_cont(" %s", reliable ? "" : "? ");
- print_symbol("%s", address);
+ print_symbol(KERN_CONT "%s", address);
pr_cont("\n");
}
--
2.12.0.rc0
[toc] | [next] | [standalone]
| From | Vegard Nossum <vegard.nossum@oracle.com> |
|---|---|
| Date | 2017-03-12 10:50 +0100 |
| Message-ID | <tk8it-81C-3@gated-at.bofh.it> |
| In reply to | #1598564 |
On 12/03/2017 10:45, Richard Weinberger wrote:
> Am 12.03.2017 um 10:38 schrieb Vegard Nossum:
>> Without KERN_CONT, the symbol will appear on a new line, making stack
>> traces completely unreadable:
[snip]
> I think it is better to fix the root of the problem by using a single printk.
> i.e.
>
> diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c
> index aa1b56f5ac68..18eddf677ec6 100644
> --- a/arch/um/kernel/sysrq.c
> +++ b/arch/um/kernel/sysrq.c
> @@ -17,10 +17,8 @@
>
> static void _print_addr(void *data, unsigned long address, int reliable)
> {
> - pr_info(" [<%08lx>]", address);
> - pr_cont(" %s", reliable ? "" : "? ");
> - print_symbol("%s", address);
> - pr_cont("\n");
> + pr_info(" [<%08lx>] %s%pB\n", address, reliable ? "" : "? ",
> + (void *)address);
> }
Your patch is better.
Tested-by: Vegard Nossum <vegard.nossum@oracle.com>
Thanks,
Vegard
[toc] | [prev] | [next] | [standalone]
| From | Richard Weinberger <richard@nod.at> |
|---|---|
| Date | 2017-03-12 10:50 +0100 |
| Message-ID | <tk8it-81C-5@gated-at.bofh.it> |
| In reply to | #1598564 |
Vegard,
Am 12.03.2017 um 10:38 schrieb Vegard Nossum:
> Without KERN_CONT, the symbol will appear on a new line, making stack
> traces completely unreadable:
>
> Call Trace:
> [<6008e891>] ?
> printk+0x0/0x94
> [<6001cce6>]
> show_stack+0xfe/0x15b
> [<600666ec>] ?
> dump_stack_print_info+0xe1/0xea
> [<6008e891>] ?
> printk+0x0/0x94
> [<6023e826>] ?
> bust_spinlocks+0x0/0x4f
> [<602343b8>]
> dump_stack+0x2a/0x2c
> [<6008e662>]
> panic+0x170/0x31e
> [<6008e4f2>] ?
> panic+0x0/0x31e
>
> This makes it readable again:
>
> Call Trace:
> [<6008e891>] ? printk+0x0/0x94
> [<6001cce6>] show_stack+0xfe/0x15b
> [<600666ec>] ? dump_stack_print_info+0xe1/0xea
> [<6008e891>] ? printk+0x0/0x94
> [<6023e826>] ? bust_spinlocks+0x0/0x4f
> [<602343b8>] dump_stack+0x2a/0x2c
> [<6008e662>] panic+0x170/0x31e
>
> Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com>
> ---
> arch/um/kernel/sysrq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c
> index a76295f7ede9..edf1f80123e7 100644
> --- a/arch/um/kernel/sysrq.c
> +++ b/arch/um/kernel/sysrq.c
> @@ -22,7 +22,7 @@ static void _print_addr(void *data, unsigned long address, int reliable)
> {
> pr_info(" [<%08lx>]", address);
> pr_cont(" %s", reliable ? "" : "? ");
> - print_symbol("%s", address);
> + print_symbol(KERN_CONT "%s", address);
> pr_cont("\n");
> }
>
I think it is better to fix the root of the problem by using a single printk.
i.e.
diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c
index aa1b56f5ac68..18eddf677ec6 100644
--- a/arch/um/kernel/sysrq.c
+++ b/arch/um/kernel/sysrq.c
@@ -17,10 +17,8 @@
static void _print_addr(void *data, unsigned long address, int reliable)
{
- pr_info(" [<%08lx>]", address);
- pr_cont(" %s", reliable ? "" : "? ");
- print_symbol("%s", address);
- pr_cont("\n");
+ pr_info(" [<%08lx>] %s%pB\n", address, reliable ? "" : "? ",
+ (void *)address);
}
Thanks,
//richard
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web