Print the stack trace with KERN_EMERG - it should be always visible.

Playing with console_loglevel is a bad idea as there may be more
messages printed than wanted. Also the stack trace might be not printed
at all if printk() was deferred and console_loglevel was raised back
before the trace got flushed.

Cc: Daniel Thompson <daniel.thomp...@linaro.org>
Cc: Douglas Anderson <diand...@chromium.org>
Cc: Jason Wessel <jason.wes...@windriver.com>
Cc: kgdb-bugreport@lists.sourceforge.net
Signed-off-by: Dmitry Safonov <d...@arista.com>
---
 kernel/debug/kdb/kdb_bt.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/kernel/debug/kdb/kdb_bt.c b/kernel/debug/kdb/kdb_bt.c
index 7e2379aa0a1e..5ce1fe082a38 100644
--- a/kernel/debug/kdb/kdb_bt.c
+++ b/kernel/debug/kdb/kdb_bt.c
@@ -21,22 +21,19 @@
 
 static void kdb_show_stack(struct task_struct *p, void *addr)
 {
-       int old_lvl = console_loglevel;
-       console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
        kdb_trap_printk++;
        kdb_set_current_task(p);
        if (addr) {
-               show_stack((struct task_struct *)p, addr);
+               show_stack_loglvl(p, addr, KERN_EMERG);
        } else if (kdb_current_regs) {
 #ifdef CONFIG_X86
-               show_stack(p, &kdb_current_regs->sp);
+               show_stack_loglvl(p, &kdb_current_regs->sp, KERN_EMERG);
 #else
-               show_stack(p, NULL);
+               show_stack_loglvl(p, NULL, KERN_EMERG);
 #endif
        } else {
-               show_stack(p, NULL);
+               show_stack_loglvl(p, NULL, KERN_EMERG);
        }
-       console_loglevel = old_lvl;
        kdb_trap_printk--;
 }
 
-- 
2.23.0



_______________________________________________
Kgdb-bugreport mailing list
Kgdb-bugreport@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport

Reply via email to