diff options
Diffstat (limited to 'arch/x86/mm/fault.c')
-rw-r--r-- | arch/x86/mm/fault.c | 21 |
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 | ||
49 | static 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 | /* |