• Home
  • Raw
  • Download

Lines Matching refs:regs

443 		reg = &state->regs[i];  in print_verifier_state()
888 struct bpf_reg_state *regs, u32 regno) in mark_reg_known_zero() argument
894 __mark_reg_not_init(env, regs + regno); in mark_reg_known_zero()
897 __mark_reg_known_zero(regs + regno); in mark_reg_known_zero()
1020 struct bpf_reg_state *regs, u32 regno) in mark_reg_unknown() argument
1026 __mark_reg_not_init(env, regs + regno); in mark_reg_unknown()
1029 __mark_reg_unknown(env, regs + regno); in mark_reg_unknown()
1040 struct bpf_reg_state *regs, u32 regno) in mark_reg_not_init() argument
1046 __mark_reg_not_init(env, regs + regno); in mark_reg_not_init()
1049 __mark_reg_not_init(env, regs + regno); in mark_reg_not_init()
1056 struct bpf_reg_state *regs = state->regs; in init_reg_state() local
1060 mark_reg_not_init(env, regs, i); in init_reg_state()
1061 regs[i].live = REG_LIVE_NONE; in init_reg_state()
1062 regs[i].parent = NULL; in init_reg_state()
1063 regs[i].subreg_def = DEF_NOT_SUBREG; in init_reg_state()
1067 regs[BPF_REG_FP].type = PTR_TO_STACK; in init_reg_state()
1068 mark_reg_known_zero(env, regs, BPF_REG_FP); in init_reg_state()
1069 regs[BPF_REG_FP].frameno = state->frameno; in init_reg_state()
1072 regs[BPF_REG_1].type = PTR_TO_CTX; in init_reg_state()
1073 mark_reg_known_zero(env, regs, BPF_REG_1); in init_reg_state()
1376 struct bpf_reg_state *reg, *regs = state->regs; in check_reg_arg() local
1384 reg = &regs[regno]; in check_reg_arg()
1410 mark_reg_unknown(env, regs, regno); in check_reg_arg()
1656 reg = &func->regs[j]; in mark_all_scalars_precise()
1692 reg = &func->regs[regno]; in __mark_chain_precision()
1774 reg = &func->regs[i]; in __mark_chain_precision()
1921 reg = &cur->regs[value_regno]; in check_stack_write()
2050 mark_reg_unknown(env, state->regs, value_regno); in check_stack_read()
2051 state->regs[value_regno].live |= REG_LIVE_WRITTEN; in check_stack_read()
2065 state->regs[value_regno] = *reg; in check_stack_read()
2070 state->regs[value_regno].live |= REG_LIVE_WRITTEN; in check_stack_read()
2093 __mark_reg_const_zero(&state->regs[value_regno]); in check_stack_read()
2104 state->regs[value_regno].precise = true; in check_stack_read()
2107 mark_reg_unknown(env, state->regs, value_regno); in check_stack_read()
2109 state->regs[value_regno].live |= REG_LIVE_WRITTEN; in check_stack_read()
2143 struct bpf_reg_state *regs = cur_regs(env); in check_map_access_type() local
2144 struct bpf_map *map = regs[regno].map_ptr; in check_map_access_type()
2166 struct bpf_reg_state *regs = cur_regs(env); in __check_map_access() local
2167 struct bpf_map *map = regs[regno].map_ptr; in __check_map_access()
2184 struct bpf_reg_state *reg = &state->regs[regno]; in check_map_access()
2293 struct bpf_reg_state *regs = cur_regs(env); in __check_packet_access() local
2294 struct bpf_reg_state *reg = &regs[regno]; in __check_packet_access()
2308 struct bpf_reg_state *regs = cur_regs(env); in check_packet_access() local
2309 struct bpf_reg_state *reg = &regs[regno]; in check_packet_access()
2390 struct bpf_reg_state *regs = cur_regs(env); in check_sock_access() local
2391 struct bpf_reg_state *reg = &regs[regno]; in check_sock_access()
2764 struct bpf_reg_state *regs = cur_regs(env); in check_mem_access() local
2765 struct bpf_reg_state *reg = regs + regno; in check_mem_access()
2792 mark_reg_unknown(env, regs, value_regno); in check_mem_access()
2814 mark_reg_unknown(env, regs, value_regno); in check_mem_access()
2816 mark_reg_known_zero(env, regs, in check_mem_access()
2819 regs[value_regno].id = ++env->id_gen; in check_mem_access()
2825 regs[value_regno].subreg_def = DEF_NOT_SUBREG; in check_mem_access()
2827 regs[value_regno].type = reg_type; in check_mem_access()
2860 mark_reg_unknown(env, regs, value_regno); in check_mem_access()
2871 mark_reg_unknown(env, regs, value_regno); in check_mem_access()
2880 mark_reg_unknown(env, regs, value_regno); in check_mem_access()
2884 mark_reg_unknown(env, regs, value_regno); in check_mem_access()
2892 regs[value_regno].type == SCALAR_VALUE) { in check_mem_access()
2894 coerce_reg_to_size(&regs[value_regno], size); in check_mem_access()
3103 struct bpf_reg_state *regs = cur_regs(env), *reg = &regs[regno]; in check_helper_mem_access() local
3145 struct bpf_reg_state *regs = cur_regs(env), *reg = &regs[regno]; in process_spin_lock() local
3241 struct bpf_reg_state *regs = cur_regs(env), *reg = &regs[regno]; in check_func_arg() local
3699 struct bpf_reg_state *regs = state->regs, *reg; in __clear_all_pkt_pointers() local
3703 if (reg_is_pkt_pointer_any(&regs[i])) in __clear_all_pkt_pointers()
3704 mark_reg_unknown(env, regs, i); in __clear_all_pkt_pointers()
3727 struct bpf_reg_state *regs = state->regs, *reg; in release_reg_references() local
3731 if (regs[i].ref_obj_id == ref_obj_id) in release_reg_references()
3732 mark_reg_unknown(env, regs, i); in release_reg_references()
3814 callee->regs[i] = caller->regs[i]; in check_func_call()
3818 mark_reg_not_init(env, caller->regs, caller_saved[i]); in check_func_call()
3845 r0 = &callee->regs[BPF_REG_0]; in prepare_func_exit()
3860 caller->regs[BPF_REG_0] = *r0; in prepare_func_exit()
3880 static void do_refine_retval_range(struct bpf_reg_state *regs, int ret_type, in do_refine_retval_range() argument
3884 struct bpf_reg_state *ret_reg = &regs[BPF_REG_0]; in do_refine_retval_range()
3955 struct bpf_reg_state *regs; in check_helper_call() local
4046 regs = cur_regs(env); in check_helper_call()
4052 !register_is_null(&regs[BPF_REG_2])) { in check_helper_call()
4059 mark_reg_not_init(env, regs, caller_saved[i]); in check_helper_call()
4064 regs[BPF_REG_0].subreg_def = DEF_NOT_SUBREG; in check_helper_call()
4069 mark_reg_unknown(env, regs, BPF_REG_0); in check_helper_call()
4071 regs[BPF_REG_0].type = NOT_INIT; in check_helper_call()
4075 mark_reg_known_zero(env, regs, BPF_REG_0); in check_helper_call()
4085 regs[BPF_REG_0].map_ptr = meta.map_ptr; in check_helper_call()
4087 regs[BPF_REG_0].type = PTR_TO_MAP_VALUE; in check_helper_call()
4089 regs[BPF_REG_0].id = ++env->id_gen; in check_helper_call()
4091 regs[BPF_REG_0].type = PTR_TO_MAP_VALUE_OR_NULL; in check_helper_call()
4092 regs[BPF_REG_0].id = ++env->id_gen; in check_helper_call()
4095 mark_reg_known_zero(env, regs, BPF_REG_0); in check_helper_call()
4096 regs[BPF_REG_0].type = PTR_TO_SOCKET_OR_NULL; in check_helper_call()
4097 regs[BPF_REG_0].id = ++env->id_gen; in check_helper_call()
4099 mark_reg_known_zero(env, regs, BPF_REG_0); in check_helper_call()
4100 regs[BPF_REG_0].type = PTR_TO_SOCK_COMMON_OR_NULL; in check_helper_call()
4101 regs[BPF_REG_0].id = ++env->id_gen; in check_helper_call()
4103 mark_reg_known_zero(env, regs, BPF_REG_0); in check_helper_call()
4104 regs[BPF_REG_0].type = PTR_TO_TCP_SOCK_OR_NULL; in check_helper_call()
4105 regs[BPF_REG_0].id = ++env->id_gen; in check_helper_call()
4114 regs[BPF_REG_0].ref_obj_id = meta.ref_obj_id; in check_helper_call()
4121 regs[BPF_REG_0].id = id; in check_helper_call()
4123 regs[BPF_REG_0].ref_obj_id = id; in check_helper_call()
4126 do_refine_retval_range(regs, fn->ret_type, func_id, &meta); in check_helper_call()
4344 struct bpf_reg_state *regs = state->regs, *dst_reg; in adjust_ptr_min_max_vals() local
4354 dst_reg = &regs[dst]; in adjust_ptr_min_max_vals()
4583 struct bpf_reg_state *regs = cur_regs(env); in adjust_scalar_min_max_vals() local
4765 mark_reg_unknown(env, regs, insn->dst_reg); in adjust_scalar_min_max_vals()
4790 mark_reg_unknown(env, regs, insn->dst_reg); in adjust_scalar_min_max_vals()
4820 mark_reg_unknown(env, regs, insn->dst_reg); in adjust_scalar_min_max_vals()
4846 mark_reg_unknown(env, regs, insn->dst_reg); in adjust_scalar_min_max_vals()
4868 struct bpf_reg_state *regs = state->regs, *dst_reg, *src_reg; in adjust_reg_min_max_vals() local
4873 dst_reg = &regs[insn->dst_reg]; in adjust_reg_min_max_vals()
4878 src_reg = &regs[insn->src_reg]; in adjust_reg_min_max_vals()
4886 mark_reg_unknown(env, regs, insn->dst_reg); in adjust_reg_min_max_vals()
4941 struct bpf_reg_state *regs = cur_regs(env); in check_alu_op() local
5003 struct bpf_reg_state *src_reg = regs + insn->src_reg; in check_alu_op()
5004 struct bpf_reg_state *dst_reg = regs + insn->dst_reg; in check_alu_op()
5025 mark_reg_unknown(env, regs, in check_alu_op()
5035 mark_reg_unknown(env, regs, insn->dst_reg); in check_alu_op()
5036 regs[insn->dst_reg].type = SCALAR_VALUE; in check_alu_op()
5038 __mark_reg_known(regs + insn->dst_reg, in check_alu_op()
5041 __mark_reg_known(regs + insn->dst_reg, in check_alu_op()
5108 reg = &state->regs[i]; in __find_good_pkt_pointers()
5687 mark_ptr_or_null_reg(state, &state->regs[i], id, is_null); in __mark_ptr_or_null_regs()
5703 struct bpf_reg_state *regs = state->regs; in mark_ptr_or_null_regs() local
5704 u32 ref_obj_id = regs[regno].ref_obj_id; in mark_ptr_or_null_regs()
5705 u32 id = regs[regno].id; in mark_ptr_or_null_regs()
5821 struct bpf_reg_state *regs = this_branch->frame[this_branch->curframe]->regs; in check_cond_jmp_op() local
5850 src_reg = &regs[insn->src_reg]; in check_cond_jmp_op()
5863 dst_reg = &regs[insn->dst_reg]; in check_cond_jmp_op()
5895 other_branch_regs = other_branch->frame[other_branch->curframe]->regs; in check_cond_jmp_op()
5905 struct bpf_reg_state *src_reg = &regs[insn->src_reg]; in check_cond_jmp_op()
5959 } else if (!try_match_pkt_pointers(insn, dst_reg, &regs[insn->src_reg], in check_cond_jmp_op()
5975 struct bpf_reg_state *regs = cur_regs(env); in check_ld_imm() local
5995 regs[insn->dst_reg].type = SCALAR_VALUE; in check_ld_imm()
5996 __mark_reg_known(&regs[insn->dst_reg], imm); in check_ld_imm()
6001 mark_reg_known_zero(env, regs, insn->dst_reg); in check_ld_imm()
6002 regs[insn->dst_reg].map_ptr = map; in check_ld_imm()
6005 regs[insn->dst_reg].type = PTR_TO_MAP_VALUE; in check_ld_imm()
6006 regs[insn->dst_reg].off = aux->map_off; in check_ld_imm()
6008 regs[insn->dst_reg].id = ++env->id_gen; in check_ld_imm()
6010 regs[insn->dst_reg].type = CONST_PTR_TO_MAP; in check_ld_imm()
6048 struct bpf_reg_state *regs = cur_regs(env); in check_ld_abs() local
6102 if (regs[ctx_reg].type != PTR_TO_CTX) { in check_ld_abs()
6115 err = check_ctx_reg(env, &regs[ctx_reg], ctx_reg); in check_ld_abs()
6121 mark_reg_not_init(env, regs, caller_saved[i]); in check_ld_abs()
6129 mark_reg_unknown(env, regs, BPF_REG_0); in check_ld_abs()
6131 regs[BPF_REG_0].subreg_def = env->insn_idx + 1; in check_ld_abs()
6755 live = st->regs[i].live; in clean_func_state()
6757 st->regs[i].live |= REG_LIVE_DONE; in clean_func_state()
6762 __mark_reg_not_init(env, &st->regs[i]); in clean_func_state()
6782 if (st->frame[0]->regs[0].live & REG_LIVE_DONE) in clean_verifier_state()
7073 if (!regsafe(&old->regs[i], &cur->regs[i], idmap)) in func_states_equal()
7172 parent_reg = parent->regs; in propagate_liveness()
7173 state_reg = state->regs; in propagate_liveness()
7209 state_reg = state->regs; in propagate_precision()
7250 if (memcmp(&fold->regs[i], &fcur->regs[i], in states_maybe_looping()
7361 if (sl->state.frame[0]->regs[0].live & REG_LIVE_DONE) { in is_state_visited()
7444 cur->frame[j]->regs[i].parent = &new->frame[j]->regs[i]; in is_state_visited()
7446 cur->frame[j]->regs[i].live = REG_LIVE_NONE; in is_state_visited()
7503 struct bpf_reg_state *regs; in do_check() local
7603 regs = cur_regs(env); in do_check()
7626 src_reg_type = regs[insn->src_reg].type; in do_check()
7678 dst_reg_type = regs[insn->dst_reg].type; in do_check()