Lines Matching refs:kcb
113 static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb) in save_previous_kprobe() argument
115 kcb->prev_kprobe.kp = kprobe_running(); in save_previous_kprobe()
116 kcb->prev_kprobe.status = kcb->kprobe_status; in save_previous_kprobe()
117 kcb->prev_kprobe.saved_msr = kcb->kprobe_saved_msr; in save_previous_kprobe()
120 static void __kprobes restore_previous_kprobe(struct kprobe_ctlblk *kcb) in restore_previous_kprobe() argument
122 __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp); in restore_previous_kprobe()
123 kcb->kprobe_status = kcb->prev_kprobe.status; in restore_previous_kprobe()
124 kcb->kprobe_saved_msr = kcb->prev_kprobe.saved_msr; in restore_previous_kprobe()
128 struct kprobe_ctlblk *kcb) in set_current_kprobe() argument
131 kcb->kprobe_saved_msr = regs->msr; in set_current_kprobe()
148 struct kprobe_ctlblk *kcb; in kprobe_handler() local
155 kcb = get_kprobe_ctlblk(); in kprobe_handler()
162 if (kcb->kprobe_status == KPROBE_HIT_SS && in kprobe_handler()
166 regs->msr |= kcb->kprobe_saved_msr; in kprobe_handler()
175 save_previous_kprobe(kcb); in kprobe_handler()
176 set_current_kprobe(p, regs, kcb); in kprobe_handler()
177 kcb->kprobe_saved_msr = regs->msr; in kprobe_handler()
180 kcb->kprobe_status = KPROBE_REENTER; in kprobe_handler()
227 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in kprobe_handler()
228 set_current_kprobe(p, regs, kcb); in kprobe_handler()
250 kcb->kprobe_status = KPROBE_HIT_SSDONE; in kprobe_handler()
267 kcb->kprobe_status = KPROBE_HIT_SS; in kprobe_handler()
366 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in post_kprobe_handler() local
375 if ((kcb->kprobe_status != KPROBE_REENTER) && cur->post_handler) { in post_kprobe_handler()
376 kcb->kprobe_status = KPROBE_HIT_SSDONE; in post_kprobe_handler()
382 regs->msr |= kcb->kprobe_saved_msr; in post_kprobe_handler()
385 if (kcb->kprobe_status == KPROBE_REENTER) { in post_kprobe_handler()
386 restore_previous_kprobe(kcb); in post_kprobe_handler()
407 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_fault_handler() local
410 switch(kcb->kprobe_status) { in kprobe_fault_handler()
422 regs->msr |= kcb->kprobe_saved_msr; in kprobe_fault_handler()
423 if (kcb->kprobe_status == KPROBE_REENTER) in kprobe_fault_handler()
424 restore_previous_kprobe(kcb); in kprobe_fault_handler()
503 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in setjmp_pre_handler() local
505 memcpy(&kcb->jprobe_saved_regs, regs, sizeof(struct pt_regs)); in setjmp_pre_handler()
531 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in longjmp_break_handler() local
538 memcpy(regs, &kcb->jprobe_saved_regs, sizeof(struct pt_regs)); in longjmp_break_handler()