diff options
Diffstat (limited to 'arch/x86/kernel/dumpstack_64.c')
| -rw-r--r-- | arch/x86/kernel/dumpstack_64.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c index a6b6fcf7f0a..e71c98d3c0d 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c @@ -139,8 +139,8 @@ fixup_bp_irq_link(unsigned long bp, unsigned long *stack,   * severe exception (double fault, nmi, stack fault, debug, mce) hardware stack   */ -void dump_trace(struct task_struct *task, -		struct pt_regs *regs, unsigned long *stack, +void dump_trace(struct task_struct *task, struct pt_regs *regs, +		unsigned long *stack, unsigned long bp,  		const struct stacktrace_ops *ops, void *data)  {  	const unsigned cpu = get_cpu(); @@ -150,7 +150,6 @@ void dump_trace(struct task_struct *task,  	struct thread_info *tinfo;  	int graph = 0;  	unsigned long dummy; -	unsigned long bp;  	if (!task)  		task = current; @@ -161,7 +160,8 @@ void dump_trace(struct task_struct *task,  			stack = (unsigned long *)task->thread.sp;  	} -	bp = stack_frame(task, regs); +	if (!bp) +		bp = stack_frame(task, regs);  	/*  	 * Print function call entries in all stacks, starting at the  	 * current stack address. If the stacks consist of nested @@ -225,7 +225,7 @@ EXPORT_SYMBOL(dump_trace);  void  show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs, -		   unsigned long *sp, char *log_lvl) +		   unsigned long *sp, unsigned long bp, char *log_lvl)  {  	unsigned long *irq_stack_end;  	unsigned long *irq_stack; @@ -269,7 +269,7 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,  	preempt_enable();  	printk(KERN_CONT "\n"); -	show_trace_log_lvl(task, regs, sp, log_lvl); +	show_trace_log_lvl(task, regs, sp, bp, log_lvl);  }  void show_registers(struct pt_regs *regs) @@ -298,7 +298,7 @@ void show_registers(struct pt_regs *regs)  		printk(KERN_EMERG "Stack:\n");  		show_stack_log_lvl(NULL, regs, (unsigned long *)sp, -				   KERN_EMERG); +				   0, KERN_EMERG);  		printk(KERN_EMERG "Code: ");  |