| /linux-6.15/arch/arc/kernel/ |
| H A D | kprobes.c | 58 if (p->ainsn.t1_addr) { in arch_remove_kprobe() 59 *(p->ainsn.t1_addr) = p->ainsn.t1_opcode; in arch_remove_kprobe() 65 p->ainsn.t1_addr = NULL; in arch_remove_kprobe() 68 if (p->ainsn.t2_addr) { in arch_remove_kprobe() 69 *(p->ainsn.t2_addr) = p->ainsn.t2_opcode; in arch_remove_kprobe() 102 if (p->ainsn.t1_addr) { in resume_execution() 103 *(p->ainsn.t1_addr) = p->ainsn.t1_opcode; in resume_execution() 112 if (p->ainsn.t2_addr) { in resume_execution() 113 *(p->ainsn.t2_addr) = p->ainsn.t2_opcode; in resume_execution() 175 p->ainsn.t1_opcode = *(p->ainsn.t1_addr); in setup_singlestep() [all …]
|
| /linux-6.15/arch/x86/kernel/kprobes/ |
| H A D | core.c | 543 ip += p->ainsn.rel32; in kprobe_emulate_jmp() 552 int3_emulate_jcc(regs, p->ainsn.jcc.type, ip, p->ainsn.rel32); in kprobe_emulate_jcc() 587 ip += p->ainsn.rel32; in kprobe_emulate_loop() 771 p->ainsn.tp_len = len; in arch_copy_kprobe() 790 memset(&p->ainsn, 0, sizeof(p->ainsn)); in arch_prepare_kprobe() 794 if (!p->ainsn.insn) in arch_prepare_kprobe() 800 p->ainsn.insn = NULL; in arch_prepare_kprobe() 826 if (p->ainsn.insn) { in arch_remove_kprobe() 828 perf_event_text_poke(p->ainsn.insn, p->ainsn.insn, in arch_remove_kprobe() 830 free_insn_slot(p->ainsn.insn, p->ainsn.boostable); in arch_remove_kprobe() [all …]
|
| H A D | ftrace.c | 73 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace() 74 p->ainsn.boostable = false; in arch_prepare_kprobe_ftrace()
|
| /linux-6.15/arch/loongarch/kernel/ |
| H A D | kprobes.c | 15 p->ainsn.insn[0] = *p->addr; in arch_prepare_ss_slot() 23 p->ainsn.restore = 0; in arch_prepare_simulate() 43 p->ainsn.insn = NULL; in arch_prepare_kprobe() 45 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 46 if (!p->ainsn.insn) in arch_prepare_kprobe() 51 if (p->ainsn.insn) in arch_prepare_kprobe() 78 if (p->ainsn.insn) { in arch_remove_kprobe() 79 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 80 p->ainsn.insn = NULL; in arch_remove_kprobe() 132 if (cur->ainsn.restore != 0) in post_kprobe_handler() [all …]
|
| H A D | ftrace_dyn.c | 348 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
|
| /linux-6.15/arch/powerpc/kernel/ |
| H A D | kprobes.c | 159 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 160 if (!p->ainsn.insn) in arch_prepare_kprobe() 169 p->ainsn.boostable = 0; in arch_prepare_kprobe() 188 if (p->ainsn.insn) { in arch_remove_kprobe() 189 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 190 p->ainsn.insn = NULL; in arch_remove_kprobe() 241 if (unlikely(p->ainsn.boostable == 0)) in try_to_emulate() 242 p->ainsn.boostable = 1; in try_to_emulate() 263 p->ainsn.boostable = -1; in try_to_emulate() 340 if (p->ainsn.boostable >= 0) { in kprobe_handler() [all …]
|
| H A D | kprobes-ftrace.c | 72 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace() 73 p->ainsn.boostable = -1; in arch_prepare_kprobe_ftrace()
|
| H A D | optprobes.c | 87 if (!is_conditional_branch(ppc_inst_read(p->ainsn.insn)) && in can_optimize() 88 analyse_instr(&op, ®s, ppc_inst_read(p->ainsn.insn)) == 1) { in can_optimize() 231 temp = ppc_inst_read(p->ainsn.insn); in arch_prepare_optimized_kprobe()
|
| /linux-6.15/arch/arm64/kernel/probes/ |
| H A D | kprobes.c | 80 p->ainsn.xol_restore = 0; in arch_prepare_simulate() 87 if (p->ainsn.api.handler) in arch_simulate_insn() 113 p->ainsn.xol_insn = NULL; in arch_prepare_kprobe() 117 p->ainsn.xol_insn = get_insn_slot(); in arch_prepare_kprobe() 118 if (!p->ainsn.xol_insn) in arch_prepare_kprobe() 124 if (p->ainsn.xol_insn) in arch_prepare_kprobe() 152 if (p->ainsn.xol_insn) { in arch_remove_kprobe() 153 free_insn_slot(p->ainsn.xol_insn, 0); in arch_remove_kprobe() 154 p->ainsn.xol_insn = NULL; in arch_remove_kprobe() 209 if (p->ainsn.xol_insn) { in setup_singlestep() [all …]
|
| /linux-6.15/arch/arm/probes/kprobes/ |
| H A D | core.c | 85 p->ainsn.insn = tmp_insn; in arch_prepare_kprobe() 92 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 93 if (!p->ainsn.insn) in arch_prepare_kprobe() 96 p->ainsn.insn[is] = tmp_insn[is]; in arch_prepare_kprobe() 97 flush_insns(p->ainsn.insn, in arch_prepare_kprobe() 104 p->ainsn.insn = NULL; in arch_prepare_kprobe() 113 if ((p->ainsn.stack_space < 0) || in arch_prepare_kprobe() 186 if (p->ainsn.insn) { in arch_remove_kprobe() 187 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 188 p->ainsn.insn = NULL; in arch_remove_kprobe() [all …]
|
| H A D | opt-arm.c | 127 if (kp->ainsn.stack_space < 0) in can_optimize() 133 if (kp->ainsn.stack_space > 255 - sizeof(struct pt_regs)) in can_optimize() 175 if (!p->ainsn.kprobe_direct_exec) in optimized_callback() 176 op->kp.ainsn.insn_singlestep(p->opcode, &p->ainsn, regs); in optimized_callback() 239 BUG_ON(orig->ainsn.stack_space < 0); in NOKPROBE_SYMBOL() 241 stack_protect += orig->ainsn.stack_space; in NOKPROBE_SYMBOL() 260 orig->ainsn.kprobe_direct_exec = false; in NOKPROBE_SYMBOL() 261 if (can_kprobe_direct_exec(orig->ainsn.register_usage_flags)) { in NOKPROBE_SYMBOL() 277 orig->ainsn.kprobe_direct_exec = true; in NOKPROBE_SYMBOL()
|
| /linux-6.15/arch/riscv/kernel/probes/ |
| H A D | kprobes.c | 38 p->ainsn.api.restore = 0; in arch_prepare_simulate() 45 if (p->ainsn.api.handler) in arch_simulate_insn() 46 p->ainsn.api.handler((u32)p->opcode, in arch_simulate_insn() 88 p->ainsn.api.insn = NULL; in arch_prepare_kprobe() 92 p->ainsn.api.insn = get_insn_slot(); in arch_prepare_kprobe() 93 if (!p->ainsn.api.insn) in arch_prepare_kprobe() 99 if (p->ainsn.api.insn) in arch_prepare_kprobe() 180 if (p->ainsn.api.insn) { in setup_singlestep() 182 slot = (unsigned long)p->ainsn.api.insn; in setup_singlestep() 222 if (cur->ainsn.api.restore != 0) in post_kprobe_handler() [all …]
|
| /linux-6.15/arch/csky/kernel/probes/ |
| H A D | kprobes.c | 65 p->ainsn.api.restore = 0; in arch_prepare_simulate() 72 if (p->ainsn.api.handler) in arch_simulate_insn() 94 p->ainsn.api.insn = NULL; in arch_prepare_kprobe() 98 p->ainsn.api.insn = get_insn_slot(); in arch_prepare_kprobe() 99 if (!p->ainsn.api.insn) in arch_prepare_kprobe() 105 if (p->ainsn.api.insn) in arch_prepare_kprobe() 127 if (p->ainsn.api.insn) { in arch_remove_kprobe() 129 p->ainsn.api.insn = NULL; in arch_remove_kprobe() 204 if (p->ainsn.api.insn) { in setup_singlestep() 253 if (cur->ainsn.api.restore != 0) in post_kprobe_handler() [all …]
|
| H A D | ftrace.c | 68 p->ainsn.api.insn = NULL; in arch_prepare_kprobe_ftrace()
|
| /linux-6.15/arch/parisc/kernel/ |
| H A D | kprobes.c | 25 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 26 if (!p->ainsn.insn) in arch_prepare_kprobe() 34 p->ainsn.insn[0] = p->opcode; in arch_prepare_kprobe() 35 p->ainsn.insn[1] = PARISC_KPROBES_BREAK_INSN2; in arch_prepare_kprobe() 43 if (!p->ainsn.insn) in arch_remove_kprobe() 46 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 47 p->ainsn.insn = NULL; in arch_remove_kprobe() 82 instruction_pointer_set(regs, (unsigned long)p->ainsn.insn); in setup_singlestep() 143 if (regs->iaoq[0] != (unsigned long)p->ainsn.insn+4) in parisc_kprobe_ss_handler()
|
| H A D | ftrace.c | 251 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
|
| /linux-6.15/arch/s390/kernel/ |
| H A D | kprobes.c | 67 new_addr = (u64)(unsigned long)p->ainsn.insn; in copy_instruction() 71 s390_kernel_write(p->ainsn.insn, &insn, len); in copy_instruction() 128 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 129 if (!p->ainsn.insn) in arch_prepare_kprobe() 181 if (!p->ainsn.insn) in arch_remove_kprobe() 183 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 184 p->ainsn.insn = NULL; in arch_remove_kprobe() 349 int fixup = probe_get_fixup_type(p->ainsn.insn); in resume_execution() 355 int ilen = insn_length(p->ainsn.insn[0] >> 8); in resume_execution() 361 int reg = (p->ainsn.insn[0] & 0xf0) >> 4; in resume_execution() [all …]
|
| H A D | ftrace.c | 333 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
|
| /linux-6.15/arch/mips/kernel/ |
| H A D | kprobes.c | 107 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe() 108 if (!p->ainsn.insn) { in arch_prepare_kprobe() 127 memcpy(&p->ainsn.insn[0], p->addr + 1, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe() 129 memcpy(&p->ainsn.insn[0], p->addr, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe() 131 p->ainsn.insn[1] = breakpoint2_insn; in arch_prepare_kprobe() 155 if (p->ainsn.insn) { in arch_remove_kprobe() 156 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe() 157 p->ainsn.insn = NULL; in arch_remove_kprobe() 212 if (p->ainsn.insn->word == 0) in evaluate_branch_instruction() 251 regs->cp0_epc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep() [all …]
|
| /linux-6.15/arch/sparc/kernel/ |
| H A D | kprobes.c | 55 p->ainsn.insn[0] = *p->addr; in arch_prepare_kprobe() 56 flushi(&p->ainsn.insn[0]); in arch_prepare_kprobe() 58 p->ainsn.insn[1] = BREAKPOINT_INSTRUCTION_2; in arch_prepare_kprobe() 59 flushi(&p->ainsn.insn[1]); in arch_prepare_kprobe() 111 regs->tpc = (unsigned long) &p->ainsn.insn[0]; in prepare_singlestep() 112 regs->tnpc = (unsigned long) &p->ainsn.insn[1]; in prepare_singlestep() 218 ainsn_addr = (unsigned long) &p->ainsn.insn[0]; in relbranch_fixup() 280 u32 insn = p->ainsn.insn[0]; in resume_execution()
|
| /linux-6.15/arch/parisc/include/asm/ |
| H A D | kprobes.h | 32 flush_icache_range((unsigned long)&(p)->ainsn.insn[0], \ 33 (unsigned long)&(p)->ainsn.insn[0] + \
|
| /linux-6.15/arch/sparc/include/asm/ |
| H A D | kprobes.h | 23 do { flushi(&(p)->ainsn.insn[0]); \ 24 flushi(&(p)->ainsn.insn[1]); \
|
| /linux-6.15/arch/sh/kernel/ |
| H A D | kprobes.c | 47 memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); in arch_prepare_kprobe() 229 *p->ainsn.insn == BREAKPOINT_INSTRUCTION) { in kprobe_handler()
|
| /linux-6.15/include/linux/ |
| H A D | kprobes.h | 87 struct arch_specific_insn ainsn; member
|
| /linux-6.15/kernel/ |
| H A D | kprobes.c | 409 memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn)); in copy_kprobe()
|