From: Paul Mundt Date: Mon, 19 May 2008 10:32:07 +0000 (+0900) Subject: sh: Make is_valid_bugaddr() more intelligent on nommu. X-Git-Tag: v2.6.26-rc4~119^2~1 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=9a33fc217d2248838d52f8ef214b1909073f3eb4;p=linux-2.6-omap-h63xx.git sh: Make is_valid_bugaddr() more intelligent on nommu. Currently is_valid_bugaddr() is true for anything >= PAGE_OFFSET, which happens to be 0 on nommu configurations. Make this a bit smarter by just reading in the opcode and comparing it against the trap type that we already know. Follows the logic from avr32. Signed-off-by: Paul Mundt --- diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index a3bdc68ef02..438f1ebcc45 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #ifdef CONFIG_BUG @@ -21,7 +22,14 @@ static void handle_BUG(struct pt_regs *regs) int is_valid_bugaddr(unsigned long addr) { - return addr >= PAGE_OFFSET; + unsigned short opcode; + + if (addr < PAGE_OFFSET) + return 0; + if (probe_kernel_address((u16 *)addr, opcode)) + return 0; + + return opcode == TRAPA_BUG_OPCODE; } #endif