auprobe            33 arch/arm/include/asm/uprobes.h 	void (*prehandler)(struct arch_uprobe *auprobe,
auprobe            36 arch/arm/include/asm/uprobes.h 	void (*posthandler)(struct arch_uprobe *auprobe,
auprobe            66 arch/arm/probes/uprobes/actions-arm.c static void uprobe_set_pc(struct arch_uprobe *auprobe,
auprobe            70 arch/arm/probes/uprobes/actions-arm.c 	u32 pcreg = auprobe->pcreg;
auprobe            76 arch/arm/probes/uprobes/actions-arm.c static void uprobe_unset_pc(struct arch_uprobe *auprobe,
auprobe            81 arch/arm/probes/uprobes/actions-arm.c 	regs->uregs[auprobe->pcreg] = autask->backup;
auprobe            84 arch/arm/probes/uprobes/actions-arm.c static void uprobe_aluwrite_pc(struct arch_uprobe *auprobe,
auprobe            88 arch/arm/probes/uprobes/actions-arm.c 	u32 pcreg = auprobe->pcreg;
auprobe            94 arch/arm/probes/uprobes/actions-arm.c static void uprobe_write_pc(struct arch_uprobe *auprobe,
auprobe            98 arch/arm/probes/uprobes/actions-arm.c 	u32 pcreg = auprobe->pcreg;
auprobe           108 arch/arm/probes/uprobes/actions-arm.c 	struct arch_uprobe *auprobe = container_of(asi, struct arch_uprobe,
auprobe           114 arch/arm/probes/uprobes/actions-arm.c 	reg = uprobes_substitute_pc(&auprobe->ixol[0], regs);
auprobe           121 arch/arm/probes/uprobes/actions-arm.c 	auprobe->pcreg = reg;
auprobe           122 arch/arm/probes/uprobes/actions-arm.c 	auprobe->prehandler = uprobe_set_pc;
auprobe           123 arch/arm/probes/uprobes/actions-arm.c 	auprobe->posthandler = uprobe_unset_pc;
auprobe           132 arch/arm/probes/uprobes/actions-arm.c 	struct arch_uprobe *auprobe = container_of(asi, struct arch_uprobe,
auprobe           137 arch/arm/probes/uprobes/actions-arm.c 		auprobe->posthandler = alu ? uprobe_aluwrite_pc
auprobe           163 arch/arm/probes/uprobes/actions-arm.c 	struct arch_uprobe *auprobe = container_of(asi, struct arch_uprobe,
auprobe           182 arch/arm/probes/uprobes/actions-arm.c 	auprobe->pcreg = 14;
auprobe           183 arch/arm/probes/uprobes/actions-arm.c 	auprobe->ixol[0] = __opcode_to_mem_arm(insn);
auprobe           185 arch/arm/probes/uprobes/actions-arm.c 	auprobe->prehandler = uprobe_set_pc;
auprobe           187 arch/arm/probes/uprobes/actions-arm.c 		auprobe->posthandler = uprobe_write_pc;
auprobe           189 arch/arm/probes/uprobes/actions-arm.c 		auprobe->posthandler = uprobe_unset_pc;
auprobe            29 arch/arm/probes/uprobes/core.c int set_swbp(struct arch_uprobe *auprobe, struct mm_struct *mm,
auprobe            32 arch/arm/probes/uprobes/core.c 	return uprobe_write_opcode(auprobe, mm, vaddr,
auprobe            33 arch/arm/probes/uprobes/core.c 		   __opcode_to_mem_arm(auprobe->bpinsn));
auprobe            36 arch/arm/probes/uprobes/core.c bool arch_uprobe_ignore(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            38 arch/arm/probes/uprobes/core.c 	if (!auprobe->asi.insn_check_cc(regs->ARM_cpsr)) {
auprobe            46 arch/arm/probes/uprobes/core.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            50 arch/arm/probes/uprobes/core.c 	if (!auprobe->simulate)
auprobe            53 arch/arm/probes/uprobes/core.c 	opcode = __mem_to_opcode_arm(*(unsigned int *) auprobe->insn);
auprobe            55 arch/arm/probes/uprobes/core.c 	auprobe->asi.insn_singlestep(opcode, &auprobe->asi, regs);
auprobe            72 arch/arm/probes/uprobes/core.c int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
auprobe            83 arch/arm/probes/uprobes/core.c 	insn = __mem_to_opcode_arm(*(unsigned int *)auprobe->insn);
auprobe            84 arch/arm/probes/uprobes/core.c 	auprobe->ixol[0] = __opcode_to_mem_arm(insn);
auprobe            85 arch/arm/probes/uprobes/core.c 	auprobe->ixol[1] = __opcode_to_mem_arm(UPROBE_SS_ARM_INSN);
auprobe            87 arch/arm/probes/uprobes/core.c 	ret = arm_probes_decode_insn(insn, &auprobe->asi, false,
auprobe            94 arch/arm/probes/uprobes/core.c 		auprobe->simulate = true;
auprobe           108 arch/arm/probes/uprobes/core.c 	auprobe->bpinsn = bpinsn;
auprobe           133 arch/arm/probes/uprobes/core.c int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           137 arch/arm/probes/uprobes/core.c 	if (auprobe->prehandler)
auprobe           138 arch/arm/probes/uprobes/core.c 		auprobe->prehandler(auprobe, &utask->autask, regs);
auprobe           147 arch/arm/probes/uprobes/core.c int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           156 arch/arm/probes/uprobes/core.c 	if (auprobe->posthandler)
auprobe           157 arch/arm/probes/uprobes/core.c 		auprobe->posthandler(auprobe, &utask->autask, regs);
auprobe           170 arch/arm/probes/uprobes/core.c void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            34 arch/arm64/kernel/probes/uprobes.c int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
auprobe            45 arch/arm64/kernel/probes/uprobes.c 	insn = *(probe_opcode_t *)(&auprobe->insn[0]);
auprobe            47 arch/arm64/kernel/probes/uprobes.c 	switch (arm_probe_decode_insn(insn, &auprobe->api)) {
auprobe            52 arch/arm64/kernel/probes/uprobes.c 		auprobe->simulate = true;
auprobe            62 arch/arm64/kernel/probes/uprobes.c int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            77 arch/arm64/kernel/probes/uprobes.c int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           103 arch/arm64/kernel/probes/uprobes.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           108 arch/arm64/kernel/probes/uprobes.c 	if (!auprobe->simulate)
auprobe           111 arch/arm64/kernel/probes/uprobes.c 	insn = *(probe_opcode_t *)(&auprobe->insn[0]);
auprobe           114 arch/arm64/kernel/probes/uprobes.c 	if (auprobe->api.handler)
auprobe           115 arch/arm64/kernel/probes/uprobes.c 		auprobe->api.handler(insn, addr, regs);
auprobe           120 arch/arm64/kernel/probes/uprobes.c void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           221 arch/mips/kernel/uprobes.c int __weak set_swbp(struct arch_uprobe *auprobe, struct mm_struct *mm,
auprobe           224 arch/mips/kernel/uprobes.c 	return uprobe_write_opcode(auprobe, mm, vaddr, UPROBE_SWBP_INSN);
auprobe           259 arch/mips/kernel/uprobes.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            37 arch/powerpc/kernel/uprobes.c int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe,
auprobe            51 arch/powerpc/kernel/uprobes.c int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            99 arch/powerpc/kernel/uprobes.c int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           154 arch/powerpc/kernel/uprobes.c void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           168 arch/powerpc/kernel/uprobes.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           176 arch/powerpc/kernel/uprobes.c 	ret = emulate_step(regs, auprobe->insn);
auprobe            23 arch/s390/kernel/uprobes.c int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
auprobe            26 arch/s390/kernel/uprobes.c 	return probe_is_prohibited_opcode(auprobe->insn);
auprobe            29 arch/s390/kernel/uprobes.c int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            36 arch/s390/kernel/uprobes.c 	auprobe->saved_per = psw_bits(regs->psw).per;
auprobe            37 arch/s390/kernel/uprobes.c 	auprobe->saved_int_code = regs->int_code;
auprobe            78 arch/s390/kernel/uprobes.c int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe            80 arch/s390/kernel/uprobes.c 	int fixup = probe_get_fixup_type(auprobe->insn);
auprobe            85 arch/s390/kernel/uprobes.c 	psw_bits(regs->psw).per = auprobe->saved_per;
auprobe            86 arch/s390/kernel/uprobes.c 	regs->int_code = auprobe->saved_int_code;
auprobe            91 arch/s390/kernel/uprobes.c 		int reg = (auprobe->insn[0] & 0xf0) >> 4;
auprobe            96 arch/s390/kernel/uprobes.c 		int ilen = insn_length(auprobe->insn[0] >> 8);
auprobe           135 arch/s390/kernel/uprobes.c void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           138 arch/s390/kernel/uprobes.c 	regs->int_code = auprobe->saved_int_code;
auprobe           269 arch/s390/kernel/uprobes.c static void handle_insn_ril(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           277 arch/s390/kernel/uprobes.c 	insn = (struct insn_ril *) &auprobe->insn;
auprobe           383 arch/s390/kernel/uprobes.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           392 arch/s390/kernel/uprobes.c 	if (probe_is_insn_relative_long(auprobe->insn)) {
auprobe           393 arch/s390/kernel/uprobes.c 		handle_insn_ril(auprobe, regs);
auprobe            76 arch/sparc/kernel/uprobes.c int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe,
auprobe           169 arch/sparc/kernel/uprobes.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           174 arch/sparc/kernel/uprobes.c 	if (auprobe->ixol == (1 << 24)) {
auprobe           190 arch/sparc/kernel/uprobes.c int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           216 arch/sparc/kernel/uprobes.c int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           220 arch/sparc/kernel/uprobes.c 	u32 insn = auprobe->ixol;
auprobe           293 arch/sparc/kernel/uprobes.c void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           276 arch/x86/kernel/uprobes.c static int uprobe_init_insn(struct arch_uprobe *auprobe, struct insn *insn, bool x86_64)
auprobe           280 arch/x86/kernel/uprobes.c 	insn_init(insn, auprobe->insn, sizeof(auprobe->insn), x86_64);
auprobe           334 arch/x86/kernel/uprobes.c static void riprel_analyze(struct arch_uprobe *auprobe, struct insn *insn)
auprobe           349 arch/x86/kernel/uprobes.c 		cursor = auprobe->insn + insn_offset_rex_prefix(insn);
auprobe           368 arch/x86/kernel/uprobes.c 		cursor = auprobe->insn + insn_offset_vex_prefix(insn) + 1;
auprobe           432 arch/x86/kernel/uprobes.c 		auprobe->defparam.fixups |= UPROBE_FIX_RIP_SI;
auprobe           435 arch/x86/kernel/uprobes.c 		auprobe->defparam.fixups |= UPROBE_FIX_RIP_DI;
auprobe           439 arch/x86/kernel/uprobes.c 		auprobe->defparam.fixups |= UPROBE_FIX_RIP_BX;
auprobe           446 arch/x86/kernel/uprobes.c 	cursor = auprobe->insn + insn_offset_modrm(insn);
auprobe           456 arch/x86/kernel/uprobes.c scratch_reg(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           458 arch/x86/kernel/uprobes.c 	if (auprobe->defparam.fixups & UPROBE_FIX_RIP_SI)
auprobe           460 arch/x86/kernel/uprobes.c 	if (auprobe->defparam.fixups & UPROBE_FIX_RIP_DI)
auprobe           469 arch/x86/kernel/uprobes.c static void riprel_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           471 arch/x86/kernel/uprobes.c 	if (auprobe->defparam.fixups & UPROBE_FIX_RIP_MASK) {
auprobe           473 arch/x86/kernel/uprobes.c 		unsigned long *sr = scratch_reg(auprobe, regs);
auprobe           476 arch/x86/kernel/uprobes.c 		*sr = utask->vaddr + auprobe->defparam.ilen;
auprobe           480 arch/x86/kernel/uprobes.c static void riprel_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           482 arch/x86/kernel/uprobes.c 	if (auprobe->defparam.fixups & UPROBE_FIX_RIP_MASK) {
auprobe           484 arch/x86/kernel/uprobes.c 		unsigned long *sr = scratch_reg(auprobe, regs);
auprobe           493 arch/x86/kernel/uprobes.c static void riprel_analyze(struct arch_uprobe *auprobe, struct insn *insn)
auprobe           496 arch/x86/kernel/uprobes.c static void riprel_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           499 arch/x86/kernel/uprobes.c static void riprel_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           519 arch/x86/kernel/uprobes.c static int default_pre_xol_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           521 arch/x86/kernel/uprobes.c 	riprel_pre_xol(auprobe, regs);
auprobe           553 arch/x86/kernel/uprobes.c static int default_post_xol_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           557 arch/x86/kernel/uprobes.c 	riprel_post_xol(auprobe, regs);
auprobe           558 arch/x86/kernel/uprobes.c 	if (auprobe->defparam.fixups & UPROBE_FIX_IP) {
auprobe           561 arch/x86/kernel/uprobes.c 	} else if (auprobe->defparam.fixups & UPROBE_FIX_CALL) {
auprobe           563 arch/x86/kernel/uprobes.c 		if (emulate_push_stack(regs, utask->vaddr + auprobe->defparam.ilen))
auprobe           567 arch/x86/kernel/uprobes.c 	if (auprobe->defparam.fixups & UPROBE_FIX_SETF)
auprobe           573 arch/x86/kernel/uprobes.c static void default_abort_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           575 arch/x86/kernel/uprobes.c 	riprel_post_xol(auprobe, regs);
auprobe           584 arch/x86/kernel/uprobes.c static bool branch_is_call(struct arch_uprobe *auprobe)
auprobe           586 arch/x86/kernel/uprobes.c 	return auprobe->branch.opc1 == 0xe8;
auprobe           618 arch/x86/kernel/uprobes.c static bool check_jmp_cond(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           622 arch/x86/kernel/uprobes.c 	switch (auprobe->branch.opc1) {
auprobe           637 arch/x86/kernel/uprobes.c static bool branch_emulate_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           639 arch/x86/kernel/uprobes.c 	unsigned long new_ip = regs->ip += auprobe->branch.ilen;
auprobe           640 arch/x86/kernel/uprobes.c 	unsigned long offs = (long)auprobe->branch.offs;
auprobe           642 arch/x86/kernel/uprobes.c 	if (branch_is_call(auprobe)) {
auprobe           654 arch/x86/kernel/uprobes.c 	} else if (!check_jmp_cond(auprobe, regs)) {
auprobe           662 arch/x86/kernel/uprobes.c static bool push_emulate_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           664 arch/x86/kernel/uprobes.c 	unsigned long *src_ptr = (void *)regs + auprobe->push.reg_offset;
auprobe           668 arch/x86/kernel/uprobes.c 	regs->ip += auprobe->push.ilen;
auprobe           672 arch/x86/kernel/uprobes.c static int branch_post_xol_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           674 arch/x86/kernel/uprobes.c 	BUG_ON(!branch_is_call(auprobe));
auprobe           685 arch/x86/kernel/uprobes.c static void branch_clear_offset(struct arch_uprobe *auprobe, struct insn *insn)
auprobe           701 arch/x86/kernel/uprobes.c 	memset(auprobe->insn + insn_offset_immediate(insn),
auprobe           715 arch/x86/kernel/uprobes.c static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
auprobe           727 arch/x86/kernel/uprobes.c 		branch_clear_offset(auprobe, insn);
auprobe           754 arch/x86/kernel/uprobes.c 	auprobe->branch.opc1 = opc1;
auprobe           755 arch/x86/kernel/uprobes.c 	auprobe->branch.ilen = insn->length;
auprobe           756 arch/x86/kernel/uprobes.c 	auprobe->branch.offs = insn->immediate.value;
auprobe           758 arch/x86/kernel/uprobes.c 	auprobe->ops = &branch_xol_ops;
auprobe           763 arch/x86/kernel/uprobes.c static int push_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
auprobe           837 arch/x86/kernel/uprobes.c 	auprobe->push.reg_offset = reg_offset;
auprobe           838 arch/x86/kernel/uprobes.c 	auprobe->push.ilen = insn->length;
auprobe           839 arch/x86/kernel/uprobes.c 	auprobe->ops = &push_xol_ops;
auprobe           850 arch/x86/kernel/uprobes.c int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, unsigned long addr)
auprobe           856 arch/x86/kernel/uprobes.c 	ret = uprobe_init_insn(auprobe, &insn, is_64bit_mm(mm));
auprobe           860 arch/x86/kernel/uprobes.c 	ret = branch_setup_xol_ops(auprobe, &insn);
auprobe           864 arch/x86/kernel/uprobes.c 	ret = push_setup_xol_ops(auprobe, &insn);
auprobe           874 arch/x86/kernel/uprobes.c 		auprobe->defparam.fixups |= UPROBE_FIX_SETF;
auprobe           897 arch/x86/kernel/uprobes.c 		riprel_analyze(auprobe, &insn);
auprobe           900 arch/x86/kernel/uprobes.c 	auprobe->defparam.ilen = insn.length;
auprobe           901 arch/x86/kernel/uprobes.c 	auprobe->defparam.fixups |= fix_ip_or_call;
auprobe           903 arch/x86/kernel/uprobes.c 	auprobe->ops = &default_xol_ops;
auprobe           912 arch/x86/kernel/uprobes.c int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           916 arch/x86/kernel/uprobes.c 	if (auprobe->ops->pre_xol) {
auprobe           917 arch/x86/kernel/uprobes.c 		int err = auprobe->ops->pre_xol(auprobe, regs);
auprobe           959 arch/x86/kernel/uprobes.c int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe           968 arch/x86/kernel/uprobes.c 	if (auprobe->ops->post_xol) {
auprobe           969 arch/x86/kernel/uprobes.c 		err = auprobe->ops->post_xol(auprobe, regs);
auprobe          1030 arch/x86/kernel/uprobes.c void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe          1034 arch/x86/kernel/uprobes.c 	if (auprobe->ops->abort)
auprobe          1035 arch/x86/kernel/uprobes.c 		auprobe->ops->abort(auprobe, regs);
auprobe          1044 arch/x86/kernel/uprobes.c static bool __skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe          1046 arch/x86/kernel/uprobes.c 	if (auprobe->ops->emulate)
auprobe          1047 arch/x86/kernel/uprobes.c 		return auprobe->ops->emulate(auprobe, regs);
auprobe          1051 arch/x86/kernel/uprobes.c bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
auprobe          1053 arch/x86/kernel/uprobes.c 	bool ret = __skip_sstep(auprobe, regs);
auprobe           112 include/linux/uprobes.h extern int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm, unsigned long vaddr, uprobe_opcode_t);
auprobe           469 kernel/events/uprobes.c int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm,
auprobe           480 kernel/events/uprobes.c 	uprobe = container_of(auprobe, struct uprobe, arch);
auprobe           580 kernel/events/uprobes.c int __weak set_swbp(struct arch_uprobe *auprobe, struct mm_struct *mm, unsigned long vaddr)
auprobe           582 kernel/events/uprobes.c 	return uprobe_write_opcode(auprobe, mm, vaddr, UPROBE_SWBP_INSN);
auprobe           595 kernel/events/uprobes.c set_orig_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, unsigned long vaddr)
auprobe           597 kernel/events/uprobes.c 	return uprobe_write_opcode(auprobe, mm, vaddr,
auprobe           598 kernel/events/uprobes.c 			*(uprobe_opcode_t *)&auprobe->insn);