From 1666a6fc73f724cdc6bd7d699f9ada4b04953efe Mon Sep 17 00:00:00 2001 From: Franck Bui-Huu Date: Thu, 3 Aug 2006 09:29:19 +0200 Subject: [MIPS] Simplify dump_stack() Make dump_stack() code not depend on CONFIG_KALLSYMS. It also make prepare_frametrace() always inlined to get less false entries reported by show_raw_backtrace(). Signed-off-by: Franck Bui-Huu Signed-off-by: Ralf Baechle diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index 549cbb8..303f008 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -158,7 +158,7 @@ static void show_stacktrace(struct task_struct *task, struct pt_regs *regs) show_backtrace(task, regs); } -static noinline void prepare_frametrace(struct pt_regs *regs) +static __always_inline void prepare_frametrace(struct pt_regs *regs) { __asm__ __volatile__( "1: la $2, 1b\n\t" @@ -200,17 +200,15 @@ void show_stack(struct task_struct *task, unsigned long *sp) */ void dump_stack(void) { - unsigned long stack; + struct pt_regs regs; -#ifdef CONFIG_KALLSYMS - if (!raw_show_trace) { - struct pt_regs regs; - prepare_frametrace(®s); - show_backtrace(current, ®s); - return; - } -#endif - show_raw_backtrace(&stack); + /* + * Remove any garbage that may be in regs (specially func + * addresses) to avoid show_raw_backtrace() to report them + */ + memset(®s, 0, sizeof(regs)); + prepare_frametrace(®s); + show_backtrace(current, ®s); } EXPORT_SYMBOL(dump_stack); -- cgit v0.10.2