From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755371AbdBGWpq (ORCPT ); Tue, 7 Feb 2017 17:45:46 -0500 Received: from mail-pf0-f177.google.com ([209.85.192.177]:36138 "EHLO mail-pf0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752404AbdBGWpn (ORCPT ); Tue, 7 Feb 2017 17:45:43 -0500 From: Omar Sandoval To: linux-kernel@vger.kernel.org Cc: kernel-team@fb.com, Ingo Molnar , Peter Zijlstra , Thomas Gleixner , Linus Torvalds Subject: [PATCH] stacktrace: fix spaces and annoying extra newlines Date: Tue, 7 Feb 2017 14:44:26 -0800 Message-Id: X-Mailer: git-send-email 2.11.1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Omar Sandoval Since KERN_CONT became meaningful again, lockdep stack traces have looked like this: [ 5.561122] -> #1 (B){+.+...}: [ 5.561528] [ 5.561532] [] lock_acquire+0xc3/0x210 [ 5.562178] [ 5.562181] [] mutex_lock_nested+0x74/0x6d0 [ 5.562861] [ 5.562880] [] init_btrfs_fs+0x21/0x196 [btrfs] [ 5.563717] [ 5.563721] [] do_one_initcall+0x52/0x1b0 [ 5.564554] [ 5.564559] [] do_init_module+0x5f/0x209 [ 5.565357] [ 5.565361] [] load_module+0x218d/0x2b80 [ 5.566020] [ 5.566021] [] SyS_finit_module+0xeb/0x120 [ 5.566694] [ 5.566696] [] 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] [] lock_acquire+0xc3/0x210 [ 6.652000] [] mutex_lock_nested+0x74/0x6d0 [ 6.652664] [] init_btrfs_fs+0x21/0x196 [btrfs] [ 6.653288] [] do_one_initcall+0x52/0x1b0 [ 6.653858] [] do_init_module+0x5f/0x209 [ 6.654426] [] load_module+0x218d/0x2b80 [ 6.654992] [] SyS_finit_module+0xeb/0x120 [ 6.655591] [] 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 Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Linus Torvalds Signed-off-by: Omar Sandoval --- 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