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

Commit 10220c88 authored by Thomas Bogendoerfer's avatar Thomas Bogendoerfer Committed by Ralf Baechle
Browse files

[MIPS] Fix check for valid stack pointer during backtrace



The newly added check for valid stack pointer address breaks at least for
64bit kernels.  Use __get_user() for accessing stack content to avoid crashes,
when doing the backtrace.

Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 057229f9
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -88,16 +88,18 @@ static void show_raw_backtrace(unsigned long reg29)
#ifdef CONFIG_KALLSYMS
	printk("\n");
#endif
#define IS_KVA01(a) ((((unsigned int)a) & 0xc0000000) == 0x80000000)
	if (IS_KVA01(sp)) {
	while (!kstack_end(sp)) {
			addr = *sp++;
		unsigned long __user *p =
			(unsigned long __user *)(unsigned long)sp++;
		if (__get_user(addr, p)) {
			printk(" (Bad stack address)");
			break;
		}
		if (__kernel_text_address(addr))
			print_ip_sym(addr);
	}
	printk("\n");
}
}

#ifdef CONFIG_KALLSYMS
int raw_show_trace;