Lines Matching refs:p
45 int __kprobes arch_prepare_kprobe(struct kprobe *p) in arch_prepare_kprobe() argument
48 kprobe_opcode_t insn = *p->addr; in arch_prepare_kprobe()
50 if ((unsigned long)p->addr & 0x03) { in arch_prepare_kprobe()
61 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
62 if (!p->ainsn.insn) in arch_prepare_kprobe()
67 memcpy(p->ainsn.insn, p->addr, in arch_prepare_kprobe()
69 p->opcode = *p->addr; in arch_prepare_kprobe()
70 flush_icache_range((unsigned long)p->ainsn.insn, in arch_prepare_kprobe()
71 (unsigned long)p->ainsn.insn + sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
74 p->ainsn.boostable = 0; in arch_prepare_kprobe()
78 void __kprobes arch_arm_kprobe(struct kprobe *p) in arch_arm_kprobe() argument
80 *p->addr = BREAKPOINT_INSTRUCTION; in arch_arm_kprobe()
81 flush_icache_range((unsigned long) p->addr, in arch_arm_kprobe()
82 (unsigned long) p->addr + sizeof(kprobe_opcode_t)); in arch_arm_kprobe()
85 void __kprobes arch_disarm_kprobe(struct kprobe *p) in arch_disarm_kprobe() argument
87 *p->addr = p->opcode; in arch_disarm_kprobe()
88 flush_icache_range((unsigned long) p->addr, in arch_disarm_kprobe()
89 (unsigned long) p->addr + sizeof(kprobe_opcode_t)); in arch_disarm_kprobe()
92 void __kprobes arch_remove_kprobe(struct kprobe *p) in arch_remove_kprobe() argument
94 if (p->ainsn.insn) { in arch_remove_kprobe()
95 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
96 p->ainsn.insn = NULL; in arch_remove_kprobe()
100 static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) in prepare_singlestep() argument
110 regs->nip = (unsigned long)p->ainsn.insn; in prepare_singlestep()
127 static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs, in set_current_kprobe() argument
130 __this_cpu_write(current_kprobe, p); in set_current_kprobe()
145 struct kprobe *p; in kprobe_handler() local
159 p = get_kprobe(addr); in kprobe_handler()
160 if (p) { in kprobe_handler()
161 kprobe_opcode_t insn = *p->ainsn.insn; in kprobe_handler()
176 set_current_kprobe(p, regs, kcb); in kprobe_handler()
178 kprobes_inc_nmissed_count(p); in kprobe_handler()
179 prepare_singlestep(p, regs); in kprobe_handler()
195 p = __this_cpu_read(current_kprobe); in kprobe_handler()
196 if (p->break_handler && p->break_handler(p, regs)) { in kprobe_handler()
203 p = get_kprobe(addr); in kprobe_handler()
204 if (!p) { in kprobe_handler()
228 set_current_kprobe(p, regs, kcb); in kprobe_handler()
229 if (p->pre_handler && p->pre_handler(p, regs)) in kprobe_handler()
234 if (p->ainsn.boostable >= 0) { in kprobe_handler()
235 unsigned int insn = *p->ainsn.insn; in kprobe_handler()
244 if (unlikely(p->ainsn.boostable == 0)) in kprobe_handler()
245 p->ainsn.boostable = 1; in kprobe_handler()
247 if (p->post_handler) in kprobe_handler()
248 p->post_handler(p, regs, 0); in kprobe_handler()
264 p->ainsn.boostable = -1; in kprobe_handler()
266 prepare_singlestep(p, regs); in kprobe_handler()
291 static int __kprobes trampoline_probe_handler(struct kprobe *p, in trampoline_probe_handler() argument
500 int __kprobes setjmp_pre_handler(struct kprobe *p, struct pt_regs *regs) in setjmp_pre_handler() argument
502 struct jprobe *jp = container_of(p, struct jprobe, kp); in setjmp_pre_handler()
529 int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) in longjmp_break_handler() argument
553 int __kprobes arch_trampoline_kprobe(struct kprobe *p) in arch_trampoline_kprobe() argument
555 if (p->addr == (kprobe_opcode_t *)&kretprobe_trampoline) in arch_trampoline_kprobe()