Lines Matching refs:op

49 	struct optimized_kprobe *op;  in __recover_optprobed_insn()  local
58 op = container_of(kp, struct optimized_kprobe, kp); in __recover_optprobed_insn()
60 if (list_empty(&op->list)) in __recover_optprobed_insn()
78 memcpy(buf + 1, op->optinsn.copied_insn, RELATIVE_ADDR_SIZE); in __recover_optprobed_insn()
81 memcpy(buf, op->optinsn.copied_insn + offs, RELATIVE_ADDR_SIZE - offs); in __recover_optprobed_insn()
156 optimized_callback(struct optimized_kprobe *op, struct pt_regs *regs) in optimized_callback() argument
159 if (kprobe_disabled(&op->kp)) in optimized_callback()
164 kprobes_inc_nmissed_count(&op->kp); in optimized_callback()
174 regs->ip = (unsigned long)op->kp.addr + INT3_SIZE; in optimized_callback()
177 __this_cpu_write(current_kprobe, &op->kp); in optimized_callback()
179 opt_pre_handler(&op->kp, regs); in optimized_callback()
319 int arch_check_optimized_kprobe(struct optimized_kprobe *op) in arch_check_optimized_kprobe() argument
324 for (i = 1; i < op->optinsn.size; i++) { in arch_check_optimized_kprobe()
325 p = get_kprobe(op->kp.addr + i); in arch_check_optimized_kprobe()
334 int arch_within_optimized_kprobe(struct optimized_kprobe *op, in arch_within_optimized_kprobe() argument
337 return ((unsigned long)op->kp.addr <= addr && in arch_within_optimized_kprobe()
338 (unsigned long)op->kp.addr + op->optinsn.size > addr); in arch_within_optimized_kprobe()
343 void __arch_remove_optimized_kprobe(struct optimized_kprobe *op, int dirty) in __arch_remove_optimized_kprobe() argument
345 if (op->optinsn.insn) { in __arch_remove_optimized_kprobe()
346 free_optinsn_slot(op->optinsn.insn, dirty); in __arch_remove_optimized_kprobe()
347 op->optinsn.insn = NULL; in __arch_remove_optimized_kprobe()
348 op->optinsn.size = 0; in __arch_remove_optimized_kprobe()
352 void arch_remove_optimized_kprobe(struct optimized_kprobe *op) in arch_remove_optimized_kprobe() argument
354 __arch_remove_optimized_kprobe(op, 1); in arch_remove_optimized_kprobe()
362 int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, in arch_prepare_optimized_kprobe() argument
369 if (!can_optimize((unsigned long)op->kp.addr)) in arch_prepare_optimized_kprobe()
376 op->optinsn.insn = slot = get_optinsn_slot(); in arch_prepare_optimized_kprobe()
386 rel = (long)slot - (long)op->kp.addr + RELATIVEJUMP_SIZE; in arch_prepare_optimized_kprobe()
396 ret = copy_optimized_instructions(buf + TMPL_END_IDX, op->kp.addr, in arch_prepare_optimized_kprobe()
400 op->optinsn.size = ret; in arch_prepare_optimized_kprobe()
401 len = TMPL_END_IDX + op->optinsn.size; in arch_prepare_optimized_kprobe()
404 synthesize_set_arg1(buf + TMPL_MOVE_IDX, (unsigned long)op); in arch_prepare_optimized_kprobe()
412 (u8 *)op->kp.addr + op->optinsn.size); in arch_prepare_optimized_kprobe()
423 __arch_remove_optimized_kprobe(op, 0); in arch_prepare_optimized_kprobe()
433 struct optimized_kprobe *op, *tmp; in arch_optimize_kprobes() local
436 list_for_each_entry_safe(op, tmp, oplist, list) { in arch_optimize_kprobes()
437 s32 rel = (s32)((long)op->optinsn.insn - in arch_optimize_kprobes()
438 ((long)op->kp.addr + RELATIVEJUMP_SIZE)); in arch_optimize_kprobes()
440 WARN_ON(kprobe_disabled(&op->kp)); in arch_optimize_kprobes()
443 memcpy(op->optinsn.copied_insn, op->kp.addr + INT3_SIZE, in arch_optimize_kprobes()
449 text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE, in arch_optimize_kprobes()
450 op->optinsn.insn); in arch_optimize_kprobes()
452 list_del_init(&op->list); in arch_optimize_kprobes()
457 void arch_unoptimize_kprobe(struct optimized_kprobe *op) in arch_unoptimize_kprobe() argument
463 memcpy(insn_buf + 1, op->optinsn.copied_insn, RELATIVE_ADDR_SIZE); in arch_unoptimize_kprobe()
464 text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE, in arch_unoptimize_kprobe()
465 op->optinsn.insn); in arch_unoptimize_kprobe()
475 struct optimized_kprobe *op, *tmp; in arch_unoptimize_kprobes() local
477 list_for_each_entry_safe(op, tmp, oplist, list) { in arch_unoptimize_kprobes()
478 arch_unoptimize_kprobe(op); in arch_unoptimize_kprobes()
479 list_move(&op->list, done_list); in arch_unoptimize_kprobes()
485 struct optimized_kprobe *op; in setup_detour_execution() local
489 op = container_of(p, struct optimized_kprobe, kp); in setup_detour_execution()
491 regs->ip = (unsigned long)op->optinsn.insn + TMPL_END_IDX; in setup_detour_execution()