diff options
Diffstat (limited to 'arch/x86/kernel/dumpstack.c')
| -rw-r--r-- | arch/x86/kernel/dumpstack.c | 20 | 
1 files changed, 14 insertions, 6 deletions
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index deb6421c9e6..b74ebc7c440 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c @@ -25,12 +25,17 @@ unsigned int code_bytes = 64;  int kstack_depth_to_print = 3 * STACKSLOTS_PER_LINE;  static int die_counter; -void printk_address(unsigned long address, int reliable) +static void printk_stack_address(unsigned long address, int reliable)  {  	pr_cont(" [<%p>] %s%pB\n",  		(void *)address, reliable ? "" : "? ", (void *)address);  } +void printk_address(unsigned long address) +{ +	pr_cont(" [<%p>] %pS\n", (void *)address, (void *)address); +} +  #ifdef CONFIG_FUNCTION_GRAPH_TRACER  static void  print_ftrace_graph_addr(unsigned long addr, void *data, @@ -151,7 +156,7 @@ static void print_trace_address(void *data, unsigned long addr, int reliable)  {  	touch_nmi_watchdog();  	printk(data); -	printk_address(addr, reliable); +	printk_stack_address(addr, reliable);  }  static const struct stacktrace_ops print_trace_ops = { @@ -195,7 +200,7 @@ static arch_spinlock_t die_lock = __ARCH_SPIN_LOCK_UNLOCKED;  static int die_owner = -1;  static unsigned int die_nest_count; -unsigned __kprobes long oops_begin(void) +unsigned long oops_begin(void)  {  	int cpu;  	unsigned long flags; @@ -218,8 +223,9 @@ unsigned __kprobes long oops_begin(void)  	return flags;  }  EXPORT_SYMBOL_GPL(oops_begin); +NOKPROBE_SYMBOL(oops_begin); -void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr) +void oops_end(unsigned long flags, struct pt_regs *regs, int signr)  {  	if (regs && kexec_should_crash(current))  		crash_kexec(regs); @@ -242,8 +248,9 @@ void __kprobes oops_end(unsigned long flags, struct pt_regs *regs, int signr)  		panic("Fatal exception");  	do_exit(signr);  } +NOKPROBE_SYMBOL(oops_end); -int __kprobes __die(const char *str, struct pt_regs *regs, long err) +int __die(const char *str, struct pt_regs *regs, long err)  {  #ifdef CONFIG_X86_32  	unsigned short ss; @@ -281,11 +288,12 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err)  #else  	/* Executive summary in case the oops scrolled away */  	printk(KERN_ALERT "RIP "); -	printk_address(regs->ip, 1); +	printk_address(regs->ip);  	printk(" RSP <%016lx>\n", regs->sp);  #endif  	return 0;  } +NOKPROBE_SYMBOL(__die);  /*   * This is gone through when something in the kernel has done something bad  | 
