diff --git a/[refs] b/[refs] index e6bda69eac7a..aed13db979a3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6d48583ba9ade609634e694fc35ea62b7a8adaaa +refs/heads/master: 85f2adf16955460c98131360f3d76aeb51aba073 diff --git a/trunk/arch/x86/mm/fault_64.c b/trunk/arch/x86/mm/fault_64.c index 121c7bda6297..3a94941578fa 100644 --- a/trunk/arch/x86/mm/fault_64.c +++ b/trunk/arch/x86/mm/fault_64.c @@ -298,7 +298,6 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, struct mm_struct *mm; struct vm_area_struct * vma; unsigned long address; - const struct exception_table_entry *fixup; int write, fault; unsigned long flags; siginfo_t info; @@ -508,9 +507,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, no_context: /* Are we prepared to handle this kernel fault? */ - fixup = search_exception_tables(regs->ip); - if (fixup) { - regs->ip = fixup->fixup; + if (fixup_exception(regs)) { return; } diff --git a/trunk/include/asm-x86/uaccess_64.h b/trunk/include/asm-x86/uaccess_64.h index f4ce8768ad44..31d794702719 100644 --- a/trunk/include/asm-x86/uaccess_64.h +++ b/trunk/include/asm-x86/uaccess_64.h @@ -65,6 +65,8 @@ struct exception_table_entry unsigned long insn, fixup; }; +extern int fixup_exception(struct pt_regs *regs); + #define ARCH_HAS_SEARCH_EXTABLE /*