Lines Matching refs:kcb

517 save_previous_kprobe(struct kprobe_ctlblk *kcb)  in save_previous_kprobe()  argument
519 kcb->prev_kprobe.kp = kprobe_running(); in save_previous_kprobe()
520 kcb->prev_kprobe.status = kcb->kprobe_status; in save_previous_kprobe()
521 kcb->prev_kprobe.old_flags = kcb->kprobe_old_flags; in save_previous_kprobe()
522 kcb->prev_kprobe.saved_flags = kcb->kprobe_saved_flags; in save_previous_kprobe()
526 restore_previous_kprobe(struct kprobe_ctlblk *kcb) in restore_previous_kprobe() argument
528 __this_cpu_write(current_kprobe, kcb->prev_kprobe.kp); in restore_previous_kprobe()
529 kcb->kprobe_status = kcb->prev_kprobe.status; in restore_previous_kprobe()
530 kcb->kprobe_old_flags = kcb->prev_kprobe.old_flags; in restore_previous_kprobe()
531 kcb->kprobe_saved_flags = kcb->prev_kprobe.saved_flags; in restore_previous_kprobe()
536 struct kprobe_ctlblk *kcb) in set_current_kprobe() argument
539 kcb->kprobe_saved_flags = kcb->kprobe_old_flags in set_current_kprobe()
542 kcb->kprobe_saved_flags &= ~X86_EFLAGS_IF; in set_current_kprobe()
578 struct kprobe_ctlblk *kcb, int reenter) in setup_singlestep() argument
598 save_previous_kprobe(kcb); in setup_singlestep()
599 set_current_kprobe(p, regs, kcb); in setup_singlestep()
600 kcb->kprobe_status = KPROBE_REENTER; in setup_singlestep()
602 kcb->kprobe_status = KPROBE_HIT_SS; in setup_singlestep()
621 struct kprobe_ctlblk *kcb) in reenter_kprobe() argument
623 switch (kcb->kprobe_status) { in reenter_kprobe()
628 setup_singlestep(p, regs, kcb, 1); in reenter_kprobe()
658 struct kprobe_ctlblk *kcb; in kprobe_int3_handler() local
670 kcb = get_kprobe_ctlblk(); in kprobe_int3_handler()
675 if (reenter_kprobe(p, regs, kcb)) in kprobe_int3_handler()
678 set_current_kprobe(p, regs, kcb); in kprobe_int3_handler()
679 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in kprobe_int3_handler()
689 setup_singlestep(p, regs, kcb, 0); in kprobe_int3_handler()
758 struct kprobe_ctlblk *kcb; in trampoline_handler() local
775 kcb = get_kprobe_ctlblk(); in trampoline_handler()
777 kcb->kprobe_status = KPROBE_HIT_ACTIVE; in trampoline_handler()
908 struct kprobe_ctlblk *kcb) in resume_execution() argument
922 *tos |= kcb->kprobe_old_flags; in resume_execution()
977 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_debug_handler() local
982 resume_execution(cur, regs, kcb); in kprobe_debug_handler()
983 regs->flags |= kcb->kprobe_saved_flags; in kprobe_debug_handler()
985 if ((kcb->kprobe_status != KPROBE_REENTER) && cur->post_handler) { in kprobe_debug_handler()
986 kcb->kprobe_status = KPROBE_HIT_SSDONE; in kprobe_debug_handler()
991 if (kcb->kprobe_status == KPROBE_REENTER) { in kprobe_debug_handler()
992 restore_previous_kprobe(kcb); in kprobe_debug_handler()
1012 struct kprobe_ctlblk *kcb = get_kprobe_ctlblk(); in kprobe_fault_handler() local
1016 WARN_ON(kcb->kprobe_status != KPROBE_HIT_SS && in kprobe_fault_handler()
1017 kcb->kprobe_status != KPROBE_REENTER); in kprobe_fault_handler()
1037 regs->flags |= kcb->kprobe_old_flags; in kprobe_fault_handler()
1039 if (kcb->kprobe_status == KPROBE_REENTER) in kprobe_fault_handler()
1040 restore_previous_kprobe(kcb); in kprobe_fault_handler()
1043 } else if (kcb->kprobe_status == KPROBE_HIT_ACTIVE || in kprobe_fault_handler()
1044 kcb->kprobe_status == KPROBE_HIT_SSDONE) { in kprobe_fault_handler()