sh: Look up the trap vector for the page fault notifier.
authorPaul Mundt <lethal@linux-sh.org>
Sun, 21 Sep 2008 03:06:43 +0000 (12:06 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Sun, 21 Sep 2008 03:06:43 +0000 (12:06 +0900)
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/mm/fault_32.c

index 659811c179e6a09290d90ac3c8bf12a2563bf9b7..ef01f45daa8a89fcf85aaccbf6312d545d12a361 100644 (file)
 #include <asm/tlbflush.h>
 #include <asm/kgdb.h>
 
-#ifdef CONFIG_KPROBES
 static inline int notify_page_fault(struct pt_regs *regs, int trap)
 {
        int ret = 0;
 
+#ifdef CONFIG_KPROBES
        if (!user_mode(regs)) {
                preempt_disable();
                if (kprobe_running() && kprobe_fault_handler(regs, trap))
                        ret = 1;
                preempt_enable();
        }
+#endif
 
        return ret;
 }
-#else
-static inline int notify_page_fault(struct pt_regs *regs, int trap)
-{
-       return 0;
-}
-#endif
 
 /*
  * This routine handles page faults.  It determines the address,
@@ -58,7 +53,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
        int fault;
        siginfo_t info;
 
-       if (notify_page_fault(regs, writeaccess))
+       if (notify_page_fault(regs, lookup_exception_vector()))
                return;
 
 #ifdef CONFIG_SH_KGDB
@@ -293,7 +288,7 @@ asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs,
        pte_t *pte;
        pte_t entry;
 
-       if (notify_page_fault(regs, writeaccess))
+       if (notify_page_fault(regs, lookup_exception_vector()))
                return 0;
 
 #ifdef CONFIG_SH_KGDB