Lines Matching refs:kcb

70 	struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();  in arch_simulate_insn()  local
76 post_kprobe_handler(p, kcb, regs); in arch_simulate_insn()
149 static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) in save_previous_kprobe() argument
151 kcb->prev_kprobe.kp = kprobe_running(); in save_previous_kprobe()
152 kcb->prev_kprobe.status = kcb->kprobe_status; in save_previous_kprobe()
155 static void __kprobes restore_previous_kprobe(struct kprobe_ctlblk *kcb) in restore_previous_kprobe() argument
157 __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp); in restore_previous_kprobe()
158 kcb->kprobe_status = kcb->prev_kprobe.status; in restore_previous_kprobe()
171 static void __kprobes kprobes_save_local_irqflag(struct kprobe_ctlblk *kcb, in kprobes_save_local_irqflag() argument
174 kcb->saved_irqflag = regs->pstate & DAIF_MASK; in kprobes_save_local_irqflag()
178 static void __kprobes kprobes_restore_local_irqflag(struct kprobe_ctlblk *kcb, in kprobes_restore_local_irqflag() argument
182 regs->pstate |= kcb->saved_irqflag; in kprobes_restore_local_irqflag()
187 struct kprobe_ctlblk *kcb, int reenter) in setup_singlestep() argument
192 save_previous_kprobe(kcb); in setup_singlestep()
194 kcb->kprobe_status = KPROBE_REENTER; in setup_singlestep()
196 kcb->kprobe_status = KPROBE_HIT_SS; in setup_singlestep()
204 kprobes_save_local_irqflag(kcb, regs); in setup_singlestep()
214 struct kprobe_ctlblk *kcb) in reenter_kprobe() argument
216 switch (kcb->kprobe_status) { in reenter_kprobe()
220 setup_singlestep(p, regs, kcb, 1); in reenter_kprobe()
237 post_kprobe_handler(struct kprobe *cur, struct kprobe_ctlblk *kcb, struct pt_regs *regs) in post_kprobe_handler() argument
244 if (kcb->kprobe_status == KPROBE_REENTER) { in post_kprobe_handler()
245 restore_previous_kprobe(kcb); in post_kprobe_handler()
249 kcb->kprobe_status = KPROBE_HIT_SSDONE; in post_kprobe_handler()
259 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_fault_handler() local
261 switch (kcb->kprobe_status) { in kprobe_fault_handler()
274 if (kcb->kprobe_status == KPROBE_REENTER) { in kprobe_fault_handler()
275 restore_previous_kprobe(kcb); in kprobe_fault_handler()
277 kprobes_restore_local_irqflag(kcb, regs); in kprobe_fault_handler()
297 struct kprobe_ctlblk *kcb; in kprobe_handler() local
300 kcb = get_kprobe_ctlblk(); in kprobe_handler()
307 if (reenter_kprobe(p, regs, kcb)) in kprobe_handler()
312 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in kprobe_handler()
322 setup_singlestep(p, regs, kcb, 0); in kprobe_handler()
340 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_breakpoint_ss_handler() local
344 if (cur && (kcb->kprobe_status & (KPROBE_HIT_SS | KPROBE_REENTER)) && in kprobe_breakpoint_ss_handler()
346 kprobes_restore_local_irqflag(kcb, regs); in kprobe_breakpoint_ss_handler()
347 post_kprobe_handler(cur, kcb, regs); in kprobe_breakpoint_ss_handler()