Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1f193a7 authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Fix show_stack() when stack argument is NULL.



It didn't handle that case at all, and now dump_stack()
can be implemented directly as show_stack(current, NULL)

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f623f388
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -2134,12 +2134,20 @@ static void user_instruction_dump (unsigned int __user *pc)
void show_stack(struct task_struct *tsk, unsigned long *_ksp)
{
	unsigned long pc, fp, thread_base, ksp;
	void *tp = task_stack_page(tsk);
	struct thread_info *tp;
	struct reg_window *rw;
	int count = 0;

	ksp = (unsigned long) _ksp;

	if (!tsk)
		tsk = current;
	tp = task_thread_info(tsk);
	if (ksp == 0UL) {
		if (tsk == current)
			asm("mov %%fp, %0" : "=r" (ksp));
		else
			ksp = tp->ksp;
	}
	if (tp == current_thread_info())
		flushw_all();

@@ -2168,11 +2176,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp)

void dump_stack(void)
{
	unsigned long *ksp;

	__asm__ __volatile__("mov	%%fp, %0"
			     : "=r" (ksp));
	show_stack(current, ksp);
	show_stack(current, NULL);
}

EXPORT_SYMBOL(dump_stack);
+1 −4
Original line number Diff line number Diff line
@@ -112,15 +112,12 @@ static void __kprobes unhandled_fault(unsigned long address,

static void bad_kernel_pc(struct pt_regs *regs, unsigned long vaddr)
{
	unsigned long *ksp;

	printk(KERN_CRIT "OOPS: Bogus kernel PC [%016lx] in fault handler\n",
	       regs->tpc);
	printk(KERN_CRIT "OOPS: RPC [%016lx]\n", regs->u_regs[15]);
	print_symbol("RPC: <%s>\n", regs->u_regs[15]);
	printk(KERN_CRIT "OOPS: Fault was to vaddr[%lx]\n", vaddr);
	__asm__("mov %%sp, %0" : "=r" (ksp));
	show_stack(current, ksp);
	dump_stack();
	unhandled_fault(regs->tpc, current, regs);
}