lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <bc946709-df33-5c5b-5af6-d889f25087ce@nod.at>
Date:   Sun, 12 Mar 2017 10:45:04 +0100
From:   Richard Weinberger <richard@....at>
To:     Vegard Nossum <vegard.nossum@...cle.com>
Cc:     user-mode-linux-devel@...ts.sourceforge.net,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] um: use KERN_CONT in stack dump

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@...cle.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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ