From 7de01d82b5da364a6b71846f7b929cf7c5cd6ef2 Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Mon, 19 May 2008 19:32:07 +0900 Subject: [PATCH] --- yaml --- r: 96966 b: refs/heads/master c: 9a33fc217d2248838d52f8ef214b1909073f3eb4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/sh/kernel/traps.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 56495928e782..fa9c8704ea4b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bfd3c7a728fbe642f79f99482a6c01158c675545 +refs/heads/master: 9a33fc217d2248838d52f8ef214b1909073f3eb4 diff --git a/trunk/arch/sh/kernel/traps.c b/trunk/arch/sh/kernel/traps.c index a3bdc68ef02c..438f1ebcc453 100644 --- a/trunk/arch/sh/kernel/traps.c +++ b/trunk/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