/linux-4.4.14/arch/arc/kernel/ |
D | kprobes.c | 34 p->ainsn.is_short = is_short_instr((unsigned long)p->addr); in arch_prepare_kprobe() 61 if (p->ainsn.t1_addr) { in arch_remove_kprobe() 62 *(p->ainsn.t1_addr) = p->ainsn.t1_opcode; in arch_remove_kprobe() 64 flush_icache_range((unsigned long)p->ainsn.t1_addr, in arch_remove_kprobe() 65 (unsigned long)p->ainsn.t1_addr + in arch_remove_kprobe() 68 p->ainsn.t1_addr = NULL; in arch_remove_kprobe() 71 if (p->ainsn.t2_addr) { in arch_remove_kprobe() 72 *(p->ainsn.t2_addr) = p->ainsn.t2_opcode; in arch_remove_kprobe() 74 flush_icache_range((unsigned long)p->ainsn.t2_addr, in arch_remove_kprobe() 75 (unsigned long)p->ainsn.t2_addr + in arch_remove_kprobe() [all …]
|
/linux-4.4.14/arch/ia64/kernel/ |
D | kprobes.c | 105 p->ainsn.inst_flag = 0; in update_kprobe_inst_flag() 106 p->ainsn.target_br_reg = 0; in update_kprobe_inst_flag() 107 p->ainsn.slot = slot; in update_kprobe_inst_flag() 116 p->ainsn.inst_flag |= INST_FLAG_BREAK_INST; in update_kprobe_inst_flag() 123 p->ainsn.inst_flag |= INST_FLAG_FIX_BRANCH_REG; in update_kprobe_inst_flag() 124 p->ainsn.target_br_reg = ((kprobe_inst >> 6) & 0x7); in update_kprobe_inst_flag() 128 p->ainsn.inst_flag |= INST_FLAG_FIX_RELATIVE_IP_ADDR; in update_kprobe_inst_flag() 131 p->ainsn.inst_flag |= INST_FLAG_FIX_RELATIVE_IP_ADDR; in update_kprobe_inst_flag() 132 p->ainsn.inst_flag |= INST_FLAG_FIX_BRANCH_REG; in update_kprobe_inst_flag() 133 p->ainsn.target_br_reg = ((kprobe_inst >> 6) & 0x7); in update_kprobe_inst_flag() [all …]
|
/linux-4.4.14/arch/s390/kernel/ |
D | kprobes.c | 75 ftrace_generate_nop_insn((struct ftrace_insn *)p->ainsn.insn); in copy_instruction() 76 p->ainsn.is_ftrace_insn = 1; in copy_instruction() 78 memcpy(p->ainsn.insn, p->addr, insn_length(*p->addr >> 8)); in copy_instruction() 79 p->opcode = p->ainsn.insn[0]; in copy_instruction() 80 if (!probe_is_insn_relative_long(p->ainsn.insn)) in copy_instruction() 89 disp = *(s32 *)&p->ainsn.insn[1]; in copy_instruction() 91 new_addr = (u64)(unsigned long)p->ainsn.insn; in copy_instruction() 93 *(s32 *)&p->ainsn.insn[1] = new_disp; in copy_instruction() 109 p->ainsn.insn = NULL; in s390_get_insn_slot() 111 p->ainsn.insn = get_dmainsn_slot(); in s390_get_insn_slot() [all …]
|
/linux-4.4.14/arch/powerpc/kernel/ |
D | kprobes.c | 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() 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() 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() 110 regs->nip = (unsigned long)p->ainsn.insn; in prepare_singlestep() [all …]
|
/linux-4.4.14/arch/arm/probes/kprobes/ |
D | opt-arm.c | 140 if (kp->ainsn.stack_space < 0) in can_optimize() 146 if (kp->ainsn.stack_space > 255 - sizeof(struct pt_regs)) in can_optimize() 189 if (!p->ainsn.kprobe_direct_exec) in optimized_callback() 190 op->kp.ainsn.insn_singlestep(p->opcode, &p->ainsn, regs); in optimized_callback() 252 BUG_ON(orig->ainsn.stack_space < 0); in arch_prepare_optimized_kprobe() 254 stack_protect += orig->ainsn.stack_space; in arch_prepare_optimized_kprobe() 273 orig->ainsn.kprobe_direct_exec = false; in arch_prepare_optimized_kprobe() 274 if (can_kprobe_direct_exec(orig->ainsn.register_usage_flags)) { in arch_prepare_optimized_kprobe() 290 orig->ainsn.kprobe_direct_exec = true; in arch_prepare_optimized_kprobe()
|
D | core.c | 95 p->ainsn.insn = tmp_insn; in arch_prepare_kprobe() 97 switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) { in arch_prepare_kprobe() 102 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 103 if (!p->ainsn.insn) in arch_prepare_kprobe() 106 p->ainsn.insn[is] = tmp_insn[is]; in arch_prepare_kprobe() 107 flush_insns(p->ainsn.insn, in arch_prepare_kprobe() 108 sizeof(p->ainsn.insn[0]) * MAX_INSN_SIZE); in arch_prepare_kprobe() 109 p->ainsn.insn_fn = (probes_insn_fn_t *) in arch_prepare_kprobe() 110 ((uintptr_t)p->ainsn.insn | thumb); in arch_prepare_kprobe() 114 p->ainsn.insn = NULL; in arch_prepare_kprobe() [all …]
|
/linux-4.4.14/arch/x86/kernel/kprobes/ |
D | core.c | 408 ret = __copy_instruction(p->ainsn.insn, p->addr); in arch_copy_kprobe() 416 if (can_boost(p->ainsn.insn)) in arch_copy_kprobe() 417 p->ainsn.boostable = 0; in arch_copy_kprobe() 419 p->ainsn.boostable = -1; in arch_copy_kprobe() 422 p->ainsn.if_modifier = is_IF_modifier(p->ainsn.insn); in arch_copy_kprobe() 425 p->opcode = p->ainsn.insn[0]; in arch_copy_kprobe() 438 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 439 if (!p->ainsn.insn) in arch_prepare_kprobe() 457 if (p->ainsn.insn) { in arch_remove_kprobe() 458 free_insn_slot(p->ainsn.insn, (p->ainsn.boostable == 1)); in arch_remove_kprobe() [all …]
|
D | ftrace.c | 96 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace() 97 p->ainsn.boostable = -1; in arch_prepare_kprobe_ftrace()
|
/linux-4.4.14/arch/tile/kernel/ |
D | kprobes.c | 98 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 99 if (!p->ainsn.insn) in arch_prepare_kprobe() 107 memcpy(&p->ainsn.insn[0], p->addr, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe() 108 p->ainsn.insn[1] = breakpoint2_insn; in arch_prepare_kprobe() 146 if (p->ainsn.insn) { in arch_remove_kprobe() 147 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 148 p->ainsn.insn = NULL; in arch_remove_kprobe() 180 regs->pc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep() 204 p->ainsn.insn[0] == breakpoint_insn) { in kprobe_handler()
|
/linux-4.4.14/arch/mips/kernel/ |
D | kprobes.c | 165 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 166 if (!p->ainsn.insn) { in arch_prepare_kprobe() 185 memcpy(&p->ainsn.insn[0], p->addr + 1, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe() 187 memcpy(&p->ainsn.insn[0], p->addr, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe() 189 p->ainsn.insn[1] = breakpoint2_insn; in arch_prepare_kprobe() 210 if (p->ainsn.insn) { in arch_remove_kprobe() 211 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 212 p->ainsn.insn = NULL; in arch_remove_kprobe() 266 if (p->ainsn.insn->word == 0) in evaluate_branch_instruction() 307 regs->cp0_epc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep() [all …]
|
/linux-4.4.14/arch/sparc/kernel/ |
D | kprobes.c | 54 p->ainsn.insn[0] = *p->addr; in arch_prepare_kprobe() 55 flushi(&p->ainsn.insn[0]); in arch_prepare_kprobe() 57 p->ainsn.insn[1] = BREAKPOINT_INSTRUCTION_2; in arch_prepare_kprobe() 58 flushi(&p->ainsn.insn[1]); in arch_prepare_kprobe() 110 regs->tpc = (unsigned long) &p->ainsn.insn[0]; in prepare_singlestep() 111 regs->tnpc = (unsigned long) &p->ainsn.insn[1]; in prepare_singlestep() 221 ainsn_addr = (unsigned long) &p->ainsn.insn[0]; in relbranch_fixup() 283 u32 insn = p->ainsn.insn[0]; in resume_execution()
|
/linux-4.4.14/arch/sparc/include/asm/ |
D | kprobes.h | 18 do { flushi(&(p)->ainsn.insn[0]); \ 19 flushi(&(p)->ainsn.insn[1]); \
|
/linux-4.4.14/arch/mn10300/kernel/ |
D | kprobes.c | 368 memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE); in arch_copy_kprobe() 407 memcpy(cur_kprobe_ss_buf, &p->ainsn.insn[0], MAX_INSN_SIZE); in prepare_singlestep() 499 switch (p->ainsn.insn[0]) { in resume_execution() 508 if (p->ainsn.insn[1] >= 0xf0 && in resume_execution() 509 p->ainsn.insn[1] <= 0xf3) { in resume_execution()
|
/linux-4.4.14/arch/avr32/kernel/ |
D | kprobes.c | 41 memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
|
/linux-4.4.14/arch/sh/kernel/ |
D | kprobes.c | 57 memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); in arch_copy_kprobe() 236 *p->ainsn.insn == BREAKPOINT_INSTRUCTION) { in kprobe_handler()
|
/linux-4.4.14/include/linux/ |
D | kprobes.h | 113 struct arch_specific_insn ainsn; member
|
/linux-4.4.14/kernel/ |
D | kprobes.c | 340 memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn)); in copy_kprobe()
|