From 760419f4abcd7731bdc614d7df019ea43a1e61c8 Mon Sep 17 00:00:00 2001 From: Thomas Bogendoerfer Date: Mon, 12 May 2008 17:58:48 +0200 Subject: [PATCH] --- yaml --- r: 97705 b: refs/heads/master c: 10220c884444a1866bb070e207d84fc18188e2a7 h: refs/heads/master i: 97703: 03cd32e7b6cb59c97bcb37b042ec2f48779d1ac6 v: v3 --- [refs] | 2 +- trunk/arch/mips/kernel/traps.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index c32eb8de6ed1..90e9e948bb1a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 057229f9efc7ebebd3ce0496195ed46df631f383 +refs/heads/master: 10220c884444a1866bb070e207d84fc18188e2a7 diff --git a/trunk/arch/mips/kernel/traps.c b/trunk/arch/mips/kernel/traps.c index cb8b0e2c7954..f9165d1a17bf 100644 --- a/trunk/arch/mips/kernel/traps.c +++ b/trunk/arch/mips/kernel/traps.c @@ -88,15 +88,17 @@ 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++; - if (__kernel_text_address(addr)) - print_ip_sym(addr); + while (!kstack_end(sp)) { + unsigned long __user *p = + (unsigned long __user *)(unsigned long)sp++; + if (__get_user(addr, p)) { + printk(" (Bad stack address)"); + break; } - printk("\n"); + if (__kernel_text_address(addr)) + print_ip_sym(addr); } + printk("\n"); } #ifdef CONFIG_KALLSYMS