aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/fault.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/mm/fault.c')
-rw-r--r--arch/x86/mm/fault.c21
1 files changed, 2 insertions, 19 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 794f364cb882..d1634c59ed56 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -46,23 +46,6 @@ kmmio_fault(struct pt_regs *regs, unsigned long addr)
46 return 0; 46 return 0;
47} 47}
48 48
49static nokprobe_inline int kprobes_fault(struct pt_regs *regs)
50{
51 if (!kprobes_built_in())
52 return 0;
53 if (user_mode(regs))
54 return 0;
55 /*
56 * To be potentially processing a kprobe fault and to be allowed to call
57 * kprobe_running(), we have to be non-preemptible.
58 */
59 if (preemptible())
60 return 0;
61 if (!kprobe_running())
62 return 0;
63 return kprobe_fault_handler(regs, X86_TRAP_PF);
64}
65
66/* 49/*
67 * Prefetch quirks: 50 * Prefetch quirks:
68 * 51 *
@@ -1282,7 +1265,7 @@ do_kern_addr_fault(struct pt_regs *regs, unsigned long hw_error_code,
1282 return; 1265 return;
1283 1266
1284 /* kprobes don't want to hook the spurious faults: */ 1267 /* kprobes don't want to hook the spurious faults: */
1285 if (kprobes_fault(regs)) 1268 if (kprobe_page_fault(regs, X86_TRAP_PF))
1286 return; 1269 return;
1287 1270
1288 /* 1271 /*
@@ -1313,7 +1296,7 @@ void do_user_addr_fault(struct pt_regs *regs,
1313 mm = tsk->mm; 1296 mm = tsk->mm;
1314 1297
1315 /* kprobes don't want to hook the spurious faults: */ 1298 /* kprobes don't want to hook the spurious faults: */
1316 if (unlikely(kprobes_fault(regs))) 1299 if (unlikely(kprobe_page_fault(regs, X86_TRAP_PF)))
1317 return; 1300 return;
1318 1301
1319 /* 1302 /*