Lines Matching refs:src_reg

234 	       insn->src_reg == BPF_PSEUDO_CALL;  in bpf_pseudo_call()
240 insn->src_reg == BPF_PSEUDO_KFUNC_CALL; in bpf_pseudo_kfunc_call()
246 insn->src_reg == BPF_PSEUDO_FUNC; in bpf_pseudo_func()
1852 insn[i].src_reg != BPF_PSEUDO_CALL) in check_subprogs()
1961 if (insn->src_reg == BPF_PSEUDO_CALL) in is_reg64()
2039 return insn->src_reg; in insn_def_regno()
2156 if (insn->src_reg != BPF_PSEUDO_KFUNC_CALL) in disasm_kfunc_name()
2180 u32 sreg = 1u << insn->src_reg; in backtrack_insn()
2233 if (insn->src_reg != BPF_REG_FP) in backtrack_insn()
2274 if (insn->src_reg == BPF_PSEUDO_CALL) in backtrack_insn()
4356 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_atomic()
4372 if (is_pointer_value(env, insn->src_reg)) { in check_atomic()
4373 verbose(env, "R%d leaks addr into mem\n", insn->src_reg); in check_atomic()
4391 load_reg = insn->src_reg; in check_atomic()
6728 mark_reg_unknown(env, regs, insn->src_reg); in sanitize_speculative_path()
6850 u32 dst = insn->dst_reg, src = insn->src_reg; in sanitize_err()
7185 struct bpf_reg_state *src_reg) in scalar32_min_max_add() argument
7187 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_add()
7188 s32 smax_val = src_reg->s32_max_value; in scalar32_min_max_add()
7189 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_add()
7190 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_add()
7211 struct bpf_reg_state *src_reg) in scalar_min_max_add() argument
7213 s64 smin_val = src_reg->smin_value; in scalar_min_max_add()
7214 s64 smax_val = src_reg->smax_value; in scalar_min_max_add()
7215 u64 umin_val = src_reg->umin_value; in scalar_min_max_add()
7216 u64 umax_val = src_reg->umax_value; in scalar_min_max_add()
7237 struct bpf_reg_state *src_reg) in scalar32_min_max_sub() argument
7239 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_sub()
7240 s32 smax_val = src_reg->s32_max_value; in scalar32_min_max_sub()
7241 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_sub()
7242 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_sub()
7265 struct bpf_reg_state *src_reg) in scalar_min_max_sub() argument
7267 s64 smin_val = src_reg->smin_value; in scalar_min_max_sub()
7268 s64 smax_val = src_reg->smax_value; in scalar_min_max_sub()
7269 u64 umin_val = src_reg->umin_value; in scalar_min_max_sub()
7270 u64 umax_val = src_reg->umax_value; in scalar_min_max_sub()
7293 struct bpf_reg_state *src_reg) in scalar32_min_max_mul() argument
7295 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_mul()
7296 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_mul()
7297 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_mul()
7325 struct bpf_reg_state *src_reg) in scalar_min_max_mul() argument
7327 s64 smin_val = src_reg->smin_value; in scalar_min_max_mul()
7328 u64 umin_val = src_reg->umin_value; in scalar_min_max_mul()
7329 u64 umax_val = src_reg->umax_value; in scalar_min_max_mul()
7357 struct bpf_reg_state *src_reg) in scalar32_min_max_and() argument
7359 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_and()
7362 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_and()
7363 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_and()
7391 struct bpf_reg_state *src_reg) in scalar_min_max_and() argument
7393 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_and()
7395 s64 smin_val = src_reg->smin_value; in scalar_min_max_and()
7396 u64 umax_val = src_reg->umax_value; in scalar_min_max_and()
7426 struct bpf_reg_state *src_reg) in scalar32_min_max_or() argument
7428 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_or()
7431 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_or()
7432 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_or()
7460 struct bpf_reg_state *src_reg) in scalar_min_max_or() argument
7462 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_or()
7464 s64 smin_val = src_reg->smin_value; in scalar_min_max_or()
7465 u64 umin_val = src_reg->umin_value; in scalar_min_max_or()
7495 struct bpf_reg_state *src_reg) in scalar32_min_max_xor() argument
7497 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_xor()
7500 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_xor()
7524 struct bpf_reg_state *src_reg) in scalar_min_max_xor() argument
7526 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_xor()
7528 s64 smin_val = src_reg->smin_value; in scalar_min_max_xor()
7573 struct bpf_reg_state *src_reg) in scalar32_min_max_lsh() argument
7575 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_lsh()
7576 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_lsh()
7621 struct bpf_reg_state *src_reg) in scalar_min_max_lsh() argument
7623 u64 umax_val = src_reg->umax_value; in scalar_min_max_lsh()
7624 u64 umin_val = src_reg->umin_value; in scalar_min_max_lsh()
7636 struct bpf_reg_state *src_reg) in scalar32_min_max_rsh() argument
7639 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_rsh()
7640 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_rsh()
7668 struct bpf_reg_state *src_reg) in scalar_min_max_rsh() argument
7670 u64 umax_val = src_reg->umax_value; in scalar_min_max_rsh()
7671 u64 umin_val = src_reg->umin_value; in scalar_min_max_rsh()
7702 struct bpf_reg_state *src_reg) in scalar32_min_max_arsh() argument
7704 u64 umin_val = src_reg->u32_min_value; in scalar32_min_max_arsh()
7725 struct bpf_reg_state *src_reg) in scalar_min_max_arsh() argument
7727 u64 umin_val = src_reg->umin_value; in scalar_min_max_arsh()
7758 struct bpf_reg_state src_reg) in adjust_scalar_min_max_vals() argument
7771 smin_val = src_reg.smin_value; in adjust_scalar_min_max_vals()
7772 smax_val = src_reg.smax_value; in adjust_scalar_min_max_vals()
7773 umin_val = src_reg.umin_value; in adjust_scalar_min_max_vals()
7774 umax_val = src_reg.umax_value; in adjust_scalar_min_max_vals()
7776 s32_min_val = src_reg.s32_min_value; in adjust_scalar_min_max_vals()
7777 s32_max_val = src_reg.s32_max_value; in adjust_scalar_min_max_vals()
7778 u32_min_val = src_reg.u32_min_value; in adjust_scalar_min_max_vals()
7779 u32_max_val = src_reg.u32_max_value; in adjust_scalar_min_max_vals()
7782 src_known = tnum_subreg_is_const(src_reg.var_off); in adjust_scalar_min_max_vals()
7793 src_known = tnum_is_const(src_reg.var_off); in adjust_scalar_min_max_vals()
7833 scalar32_min_max_add(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7834 scalar_min_max_add(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7835 dst_reg->var_off = tnum_add(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
7838 scalar32_min_max_sub(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7839 scalar_min_max_sub(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7840 dst_reg->var_off = tnum_sub(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
7843 dst_reg->var_off = tnum_mul(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
7844 scalar32_min_max_mul(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7845 scalar_min_max_mul(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7848 dst_reg->var_off = tnum_and(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
7849 scalar32_min_max_and(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7850 scalar_min_max_and(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7853 dst_reg->var_off = tnum_or(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
7854 scalar32_min_max_or(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7855 scalar_min_max_or(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7858 dst_reg->var_off = tnum_xor(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
7859 scalar32_min_max_xor(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7860 scalar_min_max_xor(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7871 scalar32_min_max_lsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7873 scalar_min_max_lsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7884 scalar32_min_max_rsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7886 scalar_min_max_rsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7897 scalar32_min_max_arsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7899 scalar_min_max_arsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
7924 struct bpf_reg_state *regs = state->regs, *dst_reg, *src_reg; in adjust_reg_min_max_vals() local
7930 src_reg = NULL; in adjust_reg_min_max_vals()
7939 src_reg = &regs[insn->src_reg]; in adjust_reg_min_max_vals()
7940 if (src_reg->type != SCALAR_VALUE) { in adjust_reg_min_max_vals()
7963 src_reg, dst_reg); in adjust_reg_min_max_vals()
7967 err = mark_chain_precision(env, insn->src_reg); in adjust_reg_min_max_vals()
7971 dst_reg, src_reg); in adjust_reg_min_max_vals()
7979 src_reg = &off_reg; in adjust_reg_min_max_vals()
7982 ptr_reg, src_reg); in adjust_reg_min_max_vals()
7991 if (WARN_ON(!src_reg)) { in adjust_reg_min_max_vals()
7996 return adjust_scalar_min_max_vals(env, insn, dst_reg, *src_reg); in adjust_reg_min_max_vals()
8009 insn->src_reg != BPF_REG_0 || in check_alu_op()
8015 if (insn->src_reg != BPF_REG_0 || insn->off != 0 || in check_alu_op()
8048 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_alu_op()
8052 if (insn->src_reg != BPF_REG_0 || insn->off != 0) { in check_alu_op()
8064 struct bpf_reg_state *src_reg = regs + insn->src_reg; in check_alu_op() local
8071 if (src_reg->type == SCALAR_VALUE && !src_reg->id) in check_alu_op()
8076 src_reg->id = ++env->id_gen; in check_alu_op()
8077 *dst_reg = *src_reg; in check_alu_op()
8082 if (is_pointer_value(env, insn->src_reg)) { in check_alu_op()
8085 insn->src_reg); in check_alu_op()
8087 } else if (src_reg->type == SCALAR_VALUE) { in check_alu_op()
8088 *dst_reg = *src_reg; in check_alu_op()
8130 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_alu_op()
8134 if (insn->src_reg != BPF_REG_0 || insn->off != 0) { in check_alu_op()
8472 struct bpf_reg_state *src_reg, in is_pkt_ptr_branch_taken() argument
8477 if (src_reg->type == PTR_TO_PACKET_END) { in is_pkt_ptr_branch_taken()
8480 pkt = src_reg; in is_pkt_ptr_branch_taken()
8683 static void __reg_combine_min_max(struct bpf_reg_state *src_reg, in __reg_combine_min_max() argument
8686 src_reg->umin_value = dst_reg->umin_value = max(src_reg->umin_value, in __reg_combine_min_max()
8688 src_reg->umax_value = dst_reg->umax_value = min(src_reg->umax_value, in __reg_combine_min_max()
8690 src_reg->smin_value = dst_reg->smin_value = max(src_reg->smin_value, in __reg_combine_min_max()
8692 src_reg->smax_value = dst_reg->smax_value = min(src_reg->smax_value, in __reg_combine_min_max()
8694 src_reg->var_off = dst_reg->var_off = tnum_intersect(src_reg->var_off, in __reg_combine_min_max()
8697 __update_reg_bounds(src_reg); in __reg_combine_min_max()
8700 __reg_deduce_bounds(src_reg); in __reg_combine_min_max()
8703 __reg_bound_offset(src_reg); in __reg_combine_min_max()
8709 __update_reg_bounds(src_reg); in __reg_combine_min_max()
8812 struct bpf_reg_state *src_reg, in try_match_pkt_pointers() argument
8826 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
8828 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
8834 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
8836 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
8838 find_good_pkt_pointers(other_branch, src_reg, in try_match_pkt_pointers()
8839 src_reg->type, true); in try_match_pkt_pointers()
8840 mark_pkt_end(this_branch, insn->src_reg, false); in try_match_pkt_pointers()
8847 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
8849 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
8855 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
8857 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
8859 find_good_pkt_pointers(this_branch, src_reg, in try_match_pkt_pointers()
8860 src_reg->type, false); in try_match_pkt_pointers()
8861 mark_pkt_end(other_branch, insn->src_reg, true); in try_match_pkt_pointers()
8868 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
8870 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
8876 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
8878 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
8880 find_good_pkt_pointers(other_branch, src_reg, in try_match_pkt_pointers()
8881 src_reg->type, false); in try_match_pkt_pointers()
8882 mark_pkt_end(this_branch, insn->src_reg, true); in try_match_pkt_pointers()
8889 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
8891 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
8897 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
8899 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
8901 find_good_pkt_pointers(this_branch, src_reg, in try_match_pkt_pointers()
8902 src_reg->type, true); in try_match_pkt_pointers()
8903 mark_pkt_end(other_branch, insn->src_reg, false); in try_match_pkt_pointers()
8945 struct bpf_reg_state *dst_reg, *other_branch_regs, *src_reg = NULL; in check_cond_jmp_op() local
8964 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_cond_jmp_op()
8968 if (is_pointer_value(env, insn->src_reg)) { in check_cond_jmp_op()
8970 insn->src_reg); in check_cond_jmp_op()
8973 src_reg = &regs[insn->src_reg]; in check_cond_jmp_op()
8975 if (insn->src_reg != BPF_REG_0) { in check_cond_jmp_op()
8991 } else if (src_reg->type == SCALAR_VALUE && in check_cond_jmp_op()
8992 is_jmp32 && tnum_is_const(tnum_subreg(src_reg->var_off))) { in check_cond_jmp_op()
8994 tnum_subreg(src_reg->var_off).value, in check_cond_jmp_op()
8997 } else if (src_reg->type == SCALAR_VALUE && in check_cond_jmp_op()
8998 !is_jmp32 && tnum_is_const(src_reg->var_off)) { in check_cond_jmp_op()
9000 src_reg->var_off.value, in check_cond_jmp_op()
9004 reg_is_pkt_pointer_any(src_reg) && in check_cond_jmp_op()
9006 pred = is_pkt_ptr_branch_taken(dst_reg, src_reg, opcode); in check_cond_jmp_op()
9016 !__is_pointer_value(false, src_reg)) in check_cond_jmp_op()
9017 err = mark_chain_precision(env, insn->src_reg); in check_cond_jmp_op()
9060 struct bpf_reg_state *src_reg = &regs[insn->src_reg]; in check_cond_jmp_op() local
9063 src_reg->type == SCALAR_VALUE) { in check_cond_jmp_op()
9064 if (tnum_is_const(src_reg->var_off) || in check_cond_jmp_op()
9066 tnum_is_const(tnum_subreg(src_reg->var_off)))) in check_cond_jmp_op()
9069 src_reg->var_off.value, in check_cond_jmp_op()
9070 tnum_subreg(src_reg->var_off).value, in check_cond_jmp_op()
9075 reg_set_min_max_inv(&other_branch_regs[insn->src_reg], in check_cond_jmp_op()
9076 src_reg, in check_cond_jmp_op()
9083 reg_combine_min_max(&other_branch_regs[insn->src_reg], in check_cond_jmp_op()
9085 src_reg, dst_reg, opcode); in check_cond_jmp_op()
9086 if (src_reg->id && in check_cond_jmp_op()
9087 !WARN_ON_ONCE(src_reg->id != other_branch_regs[insn->src_reg].id)) { in check_cond_jmp_op()
9088 find_equal_scalars(this_branch, src_reg); in check_cond_jmp_op()
9089 find_equal_scalars(other_branch, &other_branch_regs[insn->src_reg]); in check_cond_jmp_op()
9119 } else if (!try_match_pkt_pointers(insn, dst_reg, &regs[insn->src_reg], in check_cond_jmp_op()
9154 if (insn->src_reg == 0) { in check_ld_imm()
9162 if (insn->src_reg == BPF_PSEUDO_BTF_ID) { in check_ld_imm()
9182 if (insn->src_reg == BPF_PSEUDO_FUNC) { in check_ld_imm()
9204 if (insn->src_reg == BPF_PSEUDO_MAP_VALUE || in check_ld_imm()
9205 insn->src_reg == BPF_PSEUDO_MAP_IDX_VALUE) { in check_ld_imm()
9210 } else if (insn->src_reg == BPF_PSEUDO_MAP_FD || in check_ld_imm()
9211 insn->src_reg == BPF_PSEUDO_MAP_IDX) { in check_ld_imm()
9267 (mode == BPF_ABS && insn->src_reg != BPF_REG_0)) { in check_ld_abs()
9300 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_ld_abs()
9630 insns[t].src_reg == BPF_PSEUDO_CALL); in visit_insn()
10965 err = check_reg_arg(env, insn->src_reg, SRC_OP); in do_check()
10973 src_reg_type = regs[insn->src_reg].type; in do_check()
10978 err = check_mem_access(env, env->insn_idx, insn->src_reg, in do_check()
11022 err = check_reg_arg(env, insn->src_reg, SRC_OP); in do_check()
11035 BPF_WRITE, insn->src_reg, false); in do_check()
11050 insn->src_reg != BPF_REG_0) { in do_check()
11080 (insn->src_reg != BPF_REG_0 && in do_check()
11081 insn->src_reg != BPF_PSEUDO_CALL && in do_check()
11082 insn->src_reg != BPF_PSEUDO_KFUNC_CALL) || in do_check()
11090 (insn->src_reg == BPF_PSEUDO_CALL || in do_check()
11095 if (insn->src_reg == BPF_PSEUDO_CALL) in do_check()
11097 else if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) in do_check()
11106 insn->src_reg != BPF_REG_0 || in do_check()
11119 insn->src_reg != BPF_REG_0 || in do_check()
11514 insn[1].dst_reg != 0 || insn[1].src_reg != 0 || in resolve_pseudo_ldimm64()
11520 if (insn[0].src_reg == 0) in resolve_pseudo_ldimm64()
11524 if (insn[0].src_reg == BPF_PSEUDO_BTF_ID) { in resolve_pseudo_ldimm64()
11532 if (insn[0].src_reg == BPF_PSEUDO_FUNC) { in resolve_pseudo_ldimm64()
11541 switch (insn[0].src_reg) { in resolve_pseudo_ldimm64()
11555 switch (insn[0].src_reg) { in resolve_pseudo_ldimm64()
11587 if (insn[0].src_reg == BPF_PSEUDO_MAP_FD || in resolve_pseudo_ldimm64()
11588 insn[0].src_reg == BPF_PSEUDO_MAP_IDX) { in resolve_pseudo_ldimm64()
11696 if (insn->src_reg == BPF_PSEUDO_FUNC) in convert_pseudo_ld_imm64()
11698 insn->src_reg = 0; in convert_pseudo_ld_imm64()
12132 zext_patch[1].src_reg = load_reg; in opt_subreg_zext_lo32_rnd_hi32()
12666 BPF_JNE | BPF_K, insn->src_reg, in do_misc_fixups()
12675 BPF_JEQ | BPF_K, insn->src_reg, in do_misc_fixups()
12735 off_reg = issrc ? insn->src_reg : insn->dst_reg; in do_misc_fixups()
12749 *patch++ = BPF_MOV64_REG(insn->dst_reg, insn->src_reg); in do_misc_fixups()
12750 insn->src_reg = BPF_REG_AX; in do_misc_fixups()
12771 if (insn->src_reg == BPF_PSEUDO_CALL) in do_misc_fixups()
12773 if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) { in do_misc_fixups()