Lines Matching refs:src_reg

239 	       insn->src_reg == BPF_PSEUDO_CALL;  in bpf_pseudo_call()
245 insn->src_reg == BPF_PSEUDO_KFUNC_CALL; in bpf_pseudo_kfunc_call()
2234 insn[i].src_reg != BPF_PSEUDO_CALL) in check_subprogs()
2343 if (insn->src_reg == BPF_PSEUDO_CALL) in is_reg64()
2421 return insn->src_reg; in insn_def_regno()
2541 if (insn->src_reg != BPF_PSEUDO_KFUNC_CALL) in disasm_kfunc_name()
2569 u32 sreg = 1u << insn->src_reg; in backtrack_insn()
2622 if (insn->src_reg != BPF_REG_FP) in backtrack_insn()
2659 if (insn->src_reg == BPF_PSEUDO_CALL) in backtrack_insn()
4988 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_atomic()
5011 if (is_pointer_value(env, insn->src_reg)) { in check_atomic()
5012 verbose(env, "R%d leaks addr into mem\n", insn->src_reg); in check_atomic()
5030 load_reg = insn->src_reg; in check_atomic()
6705 insn->src_reg == 0 && in __check_func_call()
7978 mark_reg_unknown(env, regs, insn->src_reg); in sanitize_speculative_path()
8100 u32 dst = insn->dst_reg, src = insn->src_reg; in sanitize_err()
8430 struct bpf_reg_state *src_reg) in scalar32_min_max_add() argument
8432 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_add()
8433 s32 smax_val = src_reg->s32_max_value; in scalar32_min_max_add()
8434 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_add()
8435 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_add()
8456 struct bpf_reg_state *src_reg) in scalar_min_max_add() argument
8458 s64 smin_val = src_reg->smin_value; in scalar_min_max_add()
8459 s64 smax_val = src_reg->smax_value; in scalar_min_max_add()
8460 u64 umin_val = src_reg->umin_value; in scalar_min_max_add()
8461 u64 umax_val = src_reg->umax_value; in scalar_min_max_add()
8482 struct bpf_reg_state *src_reg) in scalar32_min_max_sub() argument
8484 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_sub()
8485 s32 smax_val = src_reg->s32_max_value; in scalar32_min_max_sub()
8486 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_sub()
8487 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_sub()
8510 struct bpf_reg_state *src_reg) in scalar_min_max_sub() argument
8512 s64 smin_val = src_reg->smin_value; in scalar_min_max_sub()
8513 s64 smax_val = src_reg->smax_value; in scalar_min_max_sub()
8514 u64 umin_val = src_reg->umin_value; in scalar_min_max_sub()
8515 u64 umax_val = src_reg->umax_value; in scalar_min_max_sub()
8538 struct bpf_reg_state *src_reg) in scalar32_min_max_mul() argument
8540 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_mul()
8541 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_mul()
8542 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_mul()
8570 struct bpf_reg_state *src_reg) in scalar_min_max_mul() argument
8572 s64 smin_val = src_reg->smin_value; in scalar_min_max_mul()
8573 u64 umin_val = src_reg->umin_value; in scalar_min_max_mul()
8574 u64 umax_val = src_reg->umax_value; in scalar_min_max_mul()
8602 struct bpf_reg_state *src_reg) in scalar32_min_max_and() argument
8604 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_and()
8607 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_and()
8608 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_and()
8636 struct bpf_reg_state *src_reg) in scalar_min_max_and() argument
8638 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_and()
8640 s64 smin_val = src_reg->smin_value; in scalar_min_max_and()
8641 u64 umax_val = src_reg->umax_value; in scalar_min_max_and()
8671 struct bpf_reg_state *src_reg) in scalar32_min_max_or() argument
8673 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_or()
8676 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_or()
8677 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_or()
8705 struct bpf_reg_state *src_reg) in scalar_min_max_or() argument
8707 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_or()
8709 s64 smin_val = src_reg->smin_value; in scalar_min_max_or()
8710 u64 umin_val = src_reg->umin_value; in scalar_min_max_or()
8740 struct bpf_reg_state *src_reg) in scalar32_min_max_xor() argument
8742 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_xor()
8745 s32 smin_val = src_reg->s32_min_value; in scalar32_min_max_xor()
8769 struct bpf_reg_state *src_reg) in scalar_min_max_xor() argument
8771 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_xor()
8773 s64 smin_val = src_reg->smin_value; in scalar_min_max_xor()
8818 struct bpf_reg_state *src_reg) in scalar32_min_max_lsh() argument
8820 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_lsh()
8821 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_lsh()
8866 struct bpf_reg_state *src_reg) in scalar_min_max_lsh() argument
8868 u64 umax_val = src_reg->umax_value; in scalar_min_max_lsh()
8869 u64 umin_val = src_reg->umin_value; in scalar_min_max_lsh()
8881 struct bpf_reg_state *src_reg) in scalar32_min_max_rsh() argument
8884 u32 umax_val = src_reg->u32_max_value; in scalar32_min_max_rsh()
8885 u32 umin_val = src_reg->u32_min_value; in scalar32_min_max_rsh()
8913 struct bpf_reg_state *src_reg) in scalar_min_max_rsh() argument
8915 u64 umax_val = src_reg->umax_value; in scalar_min_max_rsh()
8916 u64 umin_val = src_reg->umin_value; in scalar_min_max_rsh()
8947 struct bpf_reg_state *src_reg) in scalar32_min_max_arsh() argument
8949 u64 umin_val = src_reg->u32_min_value; in scalar32_min_max_arsh()
8970 struct bpf_reg_state *src_reg) in scalar_min_max_arsh() argument
8972 u64 umin_val = src_reg->umin_value; in scalar_min_max_arsh()
9003 struct bpf_reg_state src_reg) in adjust_scalar_min_max_vals() argument
9016 smin_val = src_reg.smin_value; in adjust_scalar_min_max_vals()
9017 smax_val = src_reg.smax_value; in adjust_scalar_min_max_vals()
9018 umin_val = src_reg.umin_value; in adjust_scalar_min_max_vals()
9019 umax_val = src_reg.umax_value; in adjust_scalar_min_max_vals()
9021 s32_min_val = src_reg.s32_min_value; in adjust_scalar_min_max_vals()
9022 s32_max_val = src_reg.s32_max_value; in adjust_scalar_min_max_vals()
9023 u32_min_val = src_reg.u32_min_value; in adjust_scalar_min_max_vals()
9024 u32_max_val = src_reg.u32_max_value; in adjust_scalar_min_max_vals()
9027 src_known = tnum_subreg_is_const(src_reg.var_off); in adjust_scalar_min_max_vals()
9038 src_known = tnum_is_const(src_reg.var_off); in adjust_scalar_min_max_vals()
9078 scalar32_min_max_add(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9079 scalar_min_max_add(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9080 dst_reg->var_off = tnum_add(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
9083 scalar32_min_max_sub(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9084 scalar_min_max_sub(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9085 dst_reg->var_off = tnum_sub(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
9088 dst_reg->var_off = tnum_mul(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
9089 scalar32_min_max_mul(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9090 scalar_min_max_mul(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9093 dst_reg->var_off = tnum_and(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
9094 scalar32_min_max_and(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9095 scalar_min_max_and(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9098 dst_reg->var_off = tnum_or(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
9099 scalar32_min_max_or(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9100 scalar_min_max_or(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9103 dst_reg->var_off = tnum_xor(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
9104 scalar32_min_max_xor(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9105 scalar_min_max_xor(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9116 scalar32_min_max_lsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9118 scalar_min_max_lsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9129 scalar32_min_max_rsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9131 scalar_min_max_rsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9142 scalar32_min_max_arsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9144 scalar_min_max_arsh(dst_reg, &src_reg); in adjust_scalar_min_max_vals()
9166 struct bpf_reg_state *regs = state->regs, *dst_reg, *src_reg; in adjust_reg_min_max_vals() local
9172 src_reg = NULL; in adjust_reg_min_max_vals()
9181 src_reg = &regs[insn->src_reg]; in adjust_reg_min_max_vals()
9182 if (src_reg->type != SCALAR_VALUE) { in adjust_reg_min_max_vals()
9205 src_reg, dst_reg); in adjust_reg_min_max_vals()
9209 err = mark_chain_precision(env, insn->src_reg); in adjust_reg_min_max_vals()
9213 dst_reg, src_reg); in adjust_reg_min_max_vals()
9221 src_reg = &off_reg; in adjust_reg_min_max_vals()
9224 ptr_reg, src_reg); in adjust_reg_min_max_vals()
9233 if (WARN_ON(!src_reg)) { in adjust_reg_min_max_vals()
9238 return adjust_scalar_min_max_vals(env, insn, dst_reg, *src_reg); in adjust_reg_min_max_vals()
9251 insn->src_reg != BPF_REG_0 || in check_alu_op()
9257 if (insn->src_reg != BPF_REG_0 || insn->off != 0 || in check_alu_op()
9290 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_alu_op()
9294 if (insn->src_reg != BPF_REG_0 || insn->off != 0) { in check_alu_op()
9306 struct bpf_reg_state *src_reg = regs + insn->src_reg; in check_alu_op() local
9313 if (src_reg->type == SCALAR_VALUE && !src_reg->id) in check_alu_op()
9318 src_reg->id = ++env->id_gen; in check_alu_op()
9319 *dst_reg = *src_reg; in check_alu_op()
9324 if (is_pointer_value(env, insn->src_reg)) { in check_alu_op()
9327 insn->src_reg); in check_alu_op()
9329 } else if (src_reg->type == SCALAR_VALUE) { in check_alu_op()
9330 *dst_reg = *src_reg; in check_alu_op()
9373 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_alu_op()
9377 if (insn->src_reg != BPF_REG_0 || insn->off != 0) { in check_alu_op()
9697 struct bpf_reg_state *src_reg, in is_pkt_ptr_branch_taken() argument
9702 if (src_reg->type == PTR_TO_PACKET_END) { in is_pkt_ptr_branch_taken()
9705 pkt = src_reg; in is_pkt_ptr_branch_taken()
9915 static void __reg_combine_min_max(struct bpf_reg_state *src_reg, in __reg_combine_min_max() argument
9918 src_reg->umin_value = dst_reg->umin_value = max(src_reg->umin_value, in __reg_combine_min_max()
9920 src_reg->umax_value = dst_reg->umax_value = min(src_reg->umax_value, in __reg_combine_min_max()
9922 src_reg->smin_value = dst_reg->smin_value = max(src_reg->smin_value, in __reg_combine_min_max()
9924 src_reg->smax_value = dst_reg->smax_value = min(src_reg->smax_value, in __reg_combine_min_max()
9926 src_reg->var_off = dst_reg->var_off = tnum_intersect(src_reg->var_off, in __reg_combine_min_max()
9928 reg_bounds_sync(src_reg); in __reg_combine_min_max()
10015 struct bpf_reg_state *src_reg, in try_match_pkt_pointers() argument
10029 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
10031 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
10037 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
10039 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
10041 find_good_pkt_pointers(other_branch, src_reg, in try_match_pkt_pointers()
10042 src_reg->type, true); in try_match_pkt_pointers()
10043 mark_pkt_end(this_branch, insn->src_reg, false); in try_match_pkt_pointers()
10050 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
10052 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
10058 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
10060 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
10062 find_good_pkt_pointers(this_branch, src_reg, in try_match_pkt_pointers()
10063 src_reg->type, false); in try_match_pkt_pointers()
10064 mark_pkt_end(other_branch, insn->src_reg, true); in try_match_pkt_pointers()
10071 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
10073 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
10079 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
10081 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
10083 find_good_pkt_pointers(other_branch, src_reg, in try_match_pkt_pointers()
10084 src_reg->type, false); in try_match_pkt_pointers()
10085 mark_pkt_end(this_branch, insn->src_reg, true); in try_match_pkt_pointers()
10092 src_reg->type == PTR_TO_PACKET_END) || in try_match_pkt_pointers()
10094 reg_is_init_pkt_pointer(src_reg, PTR_TO_PACKET))) { in try_match_pkt_pointers()
10100 src_reg->type == PTR_TO_PACKET) || in try_match_pkt_pointers()
10102 src_reg->type == PTR_TO_PACKET_META)) { in try_match_pkt_pointers()
10104 find_good_pkt_pointers(this_branch, src_reg, in try_match_pkt_pointers()
10105 src_reg->type, true); in try_match_pkt_pointers()
10106 mark_pkt_end(other_branch, insn->src_reg, false); in try_match_pkt_pointers()
10136 struct bpf_reg_state *dst_reg, *other_branch_regs, *src_reg = NULL; in check_cond_jmp_op() local
10155 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_cond_jmp_op()
10159 if (is_pointer_value(env, insn->src_reg)) { in check_cond_jmp_op()
10161 insn->src_reg); in check_cond_jmp_op()
10164 src_reg = &regs[insn->src_reg]; in check_cond_jmp_op()
10166 if (insn->src_reg != BPF_REG_0) { in check_cond_jmp_op()
10182 } else if (src_reg->type == SCALAR_VALUE && in check_cond_jmp_op()
10183 is_jmp32 && tnum_is_const(tnum_subreg(src_reg->var_off))) { in check_cond_jmp_op()
10185 tnum_subreg(src_reg->var_off).value, in check_cond_jmp_op()
10188 } else if (src_reg->type == SCALAR_VALUE && in check_cond_jmp_op()
10189 !is_jmp32 && tnum_is_const(src_reg->var_off)) { in check_cond_jmp_op()
10191 src_reg->var_off.value, in check_cond_jmp_op()
10195 reg_is_pkt_pointer_any(src_reg) && in check_cond_jmp_op()
10197 pred = is_pkt_ptr_branch_taken(dst_reg, src_reg, opcode); in check_cond_jmp_op()
10207 !__is_pointer_value(false, src_reg)) in check_cond_jmp_op()
10208 err = mark_chain_precision(env, insn->src_reg); in check_cond_jmp_op()
10251 struct bpf_reg_state *src_reg = &regs[insn->src_reg]; in check_cond_jmp_op() local
10254 src_reg->type == SCALAR_VALUE) { in check_cond_jmp_op()
10255 if (tnum_is_const(src_reg->var_off) || in check_cond_jmp_op()
10257 tnum_is_const(tnum_subreg(src_reg->var_off)))) in check_cond_jmp_op()
10260 src_reg->var_off.value, in check_cond_jmp_op()
10261 tnum_subreg(src_reg->var_off).value, in check_cond_jmp_op()
10266 reg_set_min_max_inv(&other_branch_regs[insn->src_reg], in check_cond_jmp_op()
10267 src_reg, in check_cond_jmp_op()
10274 reg_combine_min_max(&other_branch_regs[insn->src_reg], in check_cond_jmp_op()
10276 src_reg, dst_reg, opcode); in check_cond_jmp_op()
10277 if (src_reg->id && in check_cond_jmp_op()
10278 !WARN_ON_ONCE(src_reg->id != other_branch_regs[insn->src_reg].id)) { in check_cond_jmp_op()
10279 find_equal_scalars(this_branch, src_reg); in check_cond_jmp_op()
10280 find_equal_scalars(other_branch, &other_branch_regs[insn->src_reg]); in check_cond_jmp_op()
10310 } else if (!try_match_pkt_pointers(insn, dst_reg, &regs[insn->src_reg], in check_cond_jmp_op()
10345 if (insn->src_reg == 0) { in check_ld_imm()
10359 if (insn->src_reg == BPF_PSEUDO_BTF_ID) { in check_ld_imm()
10376 if (insn->src_reg == BPF_PSEUDO_FUNC) { in check_ld_imm()
10398 if (insn->src_reg == BPF_PSEUDO_MAP_VALUE || in check_ld_imm()
10399 insn->src_reg == BPF_PSEUDO_MAP_IDX_VALUE) { in check_ld_imm()
10404 } else if (insn->src_reg == BPF_PSEUDO_MAP_FD || in check_ld_imm()
10405 insn->src_reg == BPF_PSEUDO_MAP_IDX) { in check_ld_imm()
10461 (mode == BPF_ABS && insn->src_reg != BPF_REG_0)) { in check_ld_abs()
10494 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_ld_abs()
10854 insns[t].src_reg == BPF_PSEUDO_CALL); in visit_insn()
12261 err = check_reg_arg(env, insn->src_reg, SRC_OP); in do_check()
12269 src_reg_type = regs[insn->src_reg].type; in do_check()
12274 err = check_mem_access(env, env->insn_idx, insn->src_reg, in do_check()
12318 err = check_reg_arg(env, insn->src_reg, SRC_OP); in do_check()
12331 BPF_WRITE, insn->src_reg, false); in do_check()
12346 insn->src_reg != BPF_REG_0) { in do_check()
12375 (insn->src_reg != BPF_PSEUDO_KFUNC_CALL in do_check()
12377 (insn->src_reg != BPF_REG_0 && in do_check()
12378 insn->src_reg != BPF_PSEUDO_CALL && in do_check()
12379 insn->src_reg != BPF_PSEUDO_KFUNC_CALL) || in do_check()
12387 (insn->src_reg == BPF_PSEUDO_CALL || in do_check()
12392 if (insn->src_reg == BPF_PSEUDO_CALL) in do_check()
12394 else if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) in do_check()
12403 insn->src_reg != BPF_REG_0 || in do_check()
12416 insn->src_reg != BPF_REG_0 || in do_check()
12778 insn[1].dst_reg != 0 || insn[1].src_reg != 0 || in resolve_pseudo_ldimm64()
12784 if (insn[0].src_reg == 0) in resolve_pseudo_ldimm64()
12788 if (insn[0].src_reg == BPF_PSEUDO_BTF_ID) { in resolve_pseudo_ldimm64()
12796 if (insn[0].src_reg == BPF_PSEUDO_FUNC) { in resolve_pseudo_ldimm64()
12805 switch (insn[0].src_reg) { in resolve_pseudo_ldimm64()
12819 switch (insn[0].src_reg) { in resolve_pseudo_ldimm64()
12851 if (insn[0].src_reg == BPF_PSEUDO_MAP_FD || in resolve_pseudo_ldimm64()
12852 insn[0].src_reg == BPF_PSEUDO_MAP_IDX) { in resolve_pseudo_ldimm64()
12960 if (insn->src_reg == BPF_PSEUDO_FUNC) in convert_pseudo_ld_imm64()
12962 insn->src_reg = 0; in convert_pseudo_ld_imm64()
13396 zext_patch[1].src_reg = load_reg; in opt_subreg_zext_lo32_rnd_hi32()
13936 BPF_JNE | BPF_K, insn->src_reg, in do_misc_fixups()
13945 BPF_JEQ | BPF_K, insn->src_reg, in do_misc_fixups()
14005 off_reg = issrc ? insn->src_reg : insn->dst_reg; in do_misc_fixups()
14019 *patch++ = BPF_MOV64_REG(insn->dst_reg, insn->src_reg); in do_misc_fixups()
14020 insn->src_reg = BPF_REG_AX; in do_misc_fixups()
14041 if (insn->src_reg == BPF_PSEUDO_CALL) in do_misc_fixups()
14043 if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) { in do_misc_fixups()
14505 insn->src_reg == 0 && in is_bpf_loop_call()