diff options
Diffstat (limited to 'arch/ia64/kernel/kprobes.c')
-rw-r--r-- | arch/ia64/kernel/kprobes.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c index 72e593e94053..5bc46f151344 100644 --- a/arch/ia64/kernel/kprobes.c +++ b/arch/ia64/kernel/kprobes.c | |||
@@ -151,12 +151,12 @@ static uint __kprobes is_cmp_ctype_unc_inst(uint template, uint slot, | |||
151 | 151 | ||
152 | cmp_inst.l = kprobe_inst; | 152 | cmp_inst.l = kprobe_inst; |
153 | if ((cmp_inst.f.x2 == 0) || (cmp_inst.f.x2 == 1)) { | 153 | if ((cmp_inst.f.x2 == 0) || (cmp_inst.f.x2 == 1)) { |
154 | /* Integere compare - Register Register (A6 type)*/ | 154 | /* Integer compare - Register Register (A6 type)*/ |
155 | if ((cmp_inst.f.tb == 0) && (cmp_inst.f.ta == 0) | 155 | if ((cmp_inst.f.tb == 0) && (cmp_inst.f.ta == 0) |
156 | &&(cmp_inst.f.c == 1)) | 156 | &&(cmp_inst.f.c == 1)) |
157 | ctype_unc = 1; | 157 | ctype_unc = 1; |
158 | } else if ((cmp_inst.f.x2 == 2)||(cmp_inst.f.x2 == 3)) { | 158 | } else if ((cmp_inst.f.x2 == 2)||(cmp_inst.f.x2 == 3)) { |
159 | /* Integere compare - Immediate Register (A8 type)*/ | 159 | /* Integer compare - Immediate Register (A8 type)*/ |
160 | if ((cmp_inst.f.ta == 0) &&(cmp_inst.f.c == 1)) | 160 | if ((cmp_inst.f.ta == 0) &&(cmp_inst.f.c == 1)) |
161 | ctype_unc = 1; | 161 | ctype_unc = 1; |
162 | } | 162 | } |
@@ -820,7 +820,7 @@ out: | |||
820 | return 1; | 820 | return 1; |
821 | } | 821 | } |
822 | 822 | ||
823 | static int __kprobes kprobes_fault_handler(struct pt_regs *regs, int trapnr) | 823 | int __kprobes kprobes_fault_handler(struct pt_regs *regs, int trapnr) |
824 | { | 824 | { |
825 | struct kprobe *cur = kprobe_running(); | 825 | struct kprobe *cur = kprobe_running(); |
826 | struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); | 826 | struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); |
@@ -904,13 +904,6 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self, | |||
904 | if (post_kprobes_handler(args->regs)) | 904 | if (post_kprobes_handler(args->regs)) |
905 | ret = NOTIFY_STOP; | 905 | ret = NOTIFY_STOP; |
906 | break; | 906 | break; |
907 | case DIE_PAGE_FAULT: | ||
908 | /* kprobe_running() needs smp_processor_id() */ | ||
909 | preempt_disable(); | ||
910 | if (kprobe_running() && | ||
911 | kprobes_fault_handler(args->regs, args->trapnr)) | ||
912 | ret = NOTIFY_STOP; | ||
913 | preempt_enable(); | ||
914 | default: | 907 | default: |
915 | break; | 908 | break; |
916 | } | 909 | } |
@@ -954,7 +947,7 @@ int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) | |||
954 | /* | 947 | /* |
955 | * Callee owns the argument space and could overwrite it, eg | 948 | * Callee owns the argument space and could overwrite it, eg |
956 | * tail call optimization. So to be absolutely safe | 949 | * tail call optimization. So to be absolutely safe |
957 | * we save the argument space before transfering the control | 950 | * we save the argument space before transferring the control |
958 | * to instrumented jprobe function which runs in | 951 | * to instrumented jprobe function which runs in |
959 | * the process context | 952 | * the process context |
960 | */ | 953 | */ |