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-next>] [day] [month] [year] [list]
Message-Id: <dca35617de3bf0665fa183df9233e8d8322c708b.1486507234.git.osandov@fb.com>
Date:   Tue,  7 Feb 2017 14:44:26 -0800
From:   Omar Sandoval <osandov@...ndov.com>
To:     linux-kernel@...r.kernel.org
Cc:     kernel-team@...com, Ingo Molnar <mingo@...nel.org>,
        Peter Zijlstra <peterz@...radead.org>,
        Thomas Gleixner <tglx@...utronix.de>,
        Linus Torvalds <torvalds@...ux-foundation.org>
Subject: [PATCH] stacktrace: fix spaces and annoying extra newlines

From: Omar Sandoval <osandov@...com>

Since KERN_CONT became meaningful again, lockdep stack traces have
looked like this:

[    5.561122] -> #1 (B){+.+...}:
[    5.561528]
[    5.561532] [<ffffffff810d8873>] lock_acquire+0xc3/0x210
[    5.562178]
[    5.562181] [<ffffffff816f6414>] mutex_lock_nested+0x74/0x6d0
[    5.562861]
[    5.562880] [<ffffffffa01aa3c3>] init_btrfs_fs+0x21/0x196 [btrfs]
[    5.563717]
[    5.563721] [<ffffffff81000472>] do_one_initcall+0x52/0x1b0
[    5.564554]
[    5.564559] [<ffffffff811a3af6>] do_init_module+0x5f/0x209
[    5.565357]
[    5.565361] [<ffffffff81122f4d>] load_module+0x218d/0x2b80
[    5.566020]
[    5.566021] [<ffffffff81123beb>] SyS_finit_module+0xeb/0x120
[    5.566694]
[    5.566696] [<ffffffff816fd241>] entry_SYSCALL_64_fastpath+0x1f/0xc2

That's happening because each printk() call now gets printed on its own
line, and we do a separate call to print the spaces before the symbol.

This is what it should look like:

[    6.650322] -> #1 (B){+.+...}:
[    6.651053]        [<ffffffff810d8873>] lock_acquire+0xc3/0x210
[    6.652000]        [<ffffffff816f6414>] mutex_lock_nested+0x74/0x6d0
[    6.652664]        [<ffffffffa01b43c3>] init_btrfs_fs+0x21/0x196 [btrfs]
[    6.653288]        [<ffffffff81000472>] do_one_initcall+0x52/0x1b0
[    6.653858]        [<ffffffff811a3ae6>] do_init_module+0x5f/0x209
[    6.654426]        [<ffffffff81122f3d>] load_module+0x218d/0x2b80
[    6.654992]        [<ffffffff81123bdb>] SyS_finit_module+0xeb/0x120
[    6.655591]        [<ffffffff816fd241>] entry_SYSCALL_64_fastpath+0x1f/0xc2

Fix it by doing the printk() directly instead of using the
print_ip_sym() helper.

Fixes: 4bcc595ccd80 ("printk: reinstate KERN_CONT for printing continuation lines")
Cc: Ingo Molnar <mingo@...nel.org>
Cc: Peter Zijlstra <peterz@...radead.org>
Cc: Thomas Gleixner <tglx@...utronix.de>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>
Signed-off-by: Omar Sandoval <osandov@...com>
---
Patch is based on v4.10-rc7. That print_ip_sym() helper isn't all that
complicated and it probably causes more problems than it solves with
KERN_CONT and all. I'm not entirely sure who should take this, but it's
somewhat lockdep related, so it can probably go through tip for 4.11?

 kernel/stacktrace.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/stacktrace.c b/kernel/stacktrace.c
index b6e4c16377c7..625573af2a3c 100644
--- a/kernel/stacktrace.c
+++ b/kernel/stacktrace.c
@@ -14,13 +14,14 @@
 void print_stack_trace(struct stack_trace *trace, int spaces)
 {
 	int i;
+	void *ip;
 
 	if (WARN_ON(!trace->entries))
 		return;
 
 	for (i = 0; i < trace->nr_entries; i++) {
-		printk("%*c", 1 + spaces, ' ');
-		print_ip_sym(trace->entries[i]);
+		ip = (void *)trace->entries[i];
+		printk("%*c[<%p>] %pS\n", 1 + spaces, ' ', ip, ip);
 	}
 }
 EXPORT_SYMBOL_GPL(print_stack_trace);
-- 
2.11.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ