Merge commit 'v2.6.29-rc4' into core/percpu
[pandora-kernel.git] / arch / x86 / mm / fault.c
index 65709a6..8c3f311 100644 (file)
@@ -807,8 +807,6 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
        /* get the address */
        address = read_cr2();
 
-       if (unlikely(notify_page_fault(regs)))
-               return;
        if (unlikely(kmmio_fault(regs, address)))
                return;
 
@@ -838,6 +836,9 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
                if (spurious_fault(error_code, address))
                        return;
 
+               /* kprobes don't want to hook the spurious faults. */
+               if (notify_page_fault(regs))
+                       return;
                /*
                 * Don't take the mm semaphore here. If we fixup a prefetch
                 * fault we could otherwise deadlock.
@@ -846,6 +847,8 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
                return;
        }
 
+       if (unlikely(notify_page_fault(regs)))
+               return;
        /*
         * It's safe to allow irq's after cr2 has been saved and the
         * vmalloc fault has been handled.