Lines Matching refs:var_off

425 	if (!tnum_is_unknown(reg->var_off)) {  in verbose_invalid_scalar()
426 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in verbose_invalid_scalar()
682 if (!tnum_is_const(reg->var_off)) { in dynptr_get_spi()
687 off = reg->off + reg->var_off.value; in dynptr_get_spi()
1064 tnum_is_const(reg->var_off)) { in print_verifier_state()
1067 verbose(env, "%lld", reg->var_off.value + reg->off); in print_verifier_state()
1097 if (tnum_is_const(reg->var_off)) { in print_verifier_state()
1102 verbose_a("imm=%llx", reg->var_off.value); in print_verifier_state()
1114 if (!tnum_is_unknown(reg->var_off)) { in print_verifier_state()
1117 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in print_verifier_state()
1162 if (t == SCALAR_VALUE && tnum_is_const(reg->var_off)) in print_verifier_state()
1163 verbose(env, "%lld", reg->var_off.value + reg->off); in print_verifier_state()
1543 reg->var_off = tnum_const(imm); in ___mark_reg_known()
1562 offsetof(struct bpf_reg_state, var_off) - sizeof(reg->type)); in __mark_reg_known()
1570 reg->var_off = tnum_const_subreg(reg->var_off, imm); in __mark_reg32_known()
1678 tnum_equals_const(reg->var_off, 0); in reg_is_init_pkt_pointer()
1713 struct tnum var32_off = tnum_subreg(reg->var_off); in __update_reg32_bounds()
1730 reg->var_off.value | (reg->var_off.mask & S64_MIN)); in __update_reg64_bounds()
1733 reg->var_off.value | (reg->var_off.mask & S64_MAX)); in __update_reg64_bounds()
1734 reg->umin_value = max(reg->umin_value, reg->var_off.value); in __update_reg64_bounds()
1736 reg->var_off.value | reg->var_off.mask); in __update_reg64_bounds()
1823 struct tnum var64_off = tnum_intersect(reg->var_off, in __reg_bound_offset()
1826 struct tnum var32_off = tnum_intersect(tnum_subreg(reg->var_off), in __reg_bound_offset()
1830 reg->var_off = tnum_or(tnum_clear_subreg(var64_off), var32_off); in __reg_bound_offset()
1878 if (tnum_equals_const(tnum_clear_subreg(reg->var_off), 0)) { in __reg_combine_32_into_64()
1925 memset(reg, 0, offsetof(struct bpf_reg_state, var_off)); in __mark_reg_unknown()
1929 reg->var_off = tnum_unknown; in __mark_reg_unknown()
2530 parent->var_off.value, parent->off); in mark_reg_read()
3416 return reg->type == SCALAR_VALUE && tnum_equals_const(reg->var_off, 0); in register_is_null()
3421 return reg->type == SCALAR_VALUE && tnum_is_const(reg->var_off); in register_is_const()
3426 return tnum_is_unknown(reg->var_off) && in __is_scalar_unbounded()
3945 bool var_off = !tnum_is_const(reg->var_off); in check_stack_read() local
3951 if (dst_regno < 0 && var_off) { in check_stack_read()
3954 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_stack_read()
3963 if (!env->bypass_spec_v1 && var_off) { in check_stack_read()
3966 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_stack_read()
3972 if (!var_off) { in check_stack_read()
3973 off += reg->var_off.value; in check_stack_read()
4006 if (tnum_is_const(reg->var_off)) { in check_stack_write()
4007 off += reg->var_off.value; in check_stack_write()
4155 if (!tnum_is_const(reg->var_off) || reg->var_off.value) { in __check_ptr_off_reg()
4158 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in __check_ptr_off_reg()
4337 if (!tnum_is_const(reg->var_off)) { in check_map_access()
4341 if (p != off + reg->var_off.value) { in check_map_access()
4343 p, off + reg->var_off.value); in check_map_access()
4620 reg_off = tnum_add(reg->var_off, tnum_const(ip_align + reg->off + off)); in check_pkt_ptr_alignment()
4624 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_pkt_ptr_alignment()
4645 reg_off = tnum_add(reg->var_off, tnum_const(reg->off + off)); in check_generic_ptr_alignment()
4649 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_generic_ptr_alignment()
4866 if (!tnum_is_const(reg->var_off) || reg->var_off.value) { in __check_buffer_access()
4869 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in __check_buffer_access()
4917 reg->var_off = tnum_subreg(reg->var_off); in zext_32_to_64()
4929 reg->var_off = tnum_cast(reg->var_off, size); in coerce_reg_to_size()
5052 if (!tnum_is_const(reg->var_off) || reg->var_off.value) { in check_ptr_to_btf_access()
5055 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_ptr_to_btf_access()
5254 if (tnum_is_const(reg->var_off)) { in check_stack_access_within_bounds()
5255 min_off = reg->var_off.value + off; in check_stack_access_within_bounds()
5279 if (tnum_is_const(reg->var_off)) { in check_stack_access_within_bounds()
5285 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_stack_access_within_bounds()
5346 if (tnum_is_const(reg->var_off)) in check_mem_access()
5348 off + reg->var_off.value, BPF_KPTR); in check_mem_access()
5355 if (tnum_is_const(reg->var_off) && in check_mem_access()
5358 int map_off = off + reg->var_off.value; in check_mem_access()
5687 if (tnum_is_const(reg->var_off)) { in check_stack_range_initialized()
5688 min_off = max_off = reg->var_off.value + off; in check_stack_range_initialized()
5698 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_stack_range_initialized()
5777 if (tnum_is_const(reg->var_off)) { in check_stack_range_initialized()
5783 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_stack_range_initialized()
5914 if (!tnum_is_const(reg->var_off)) in check_mem_size_reg()
6036 bool is_const = tnum_is_const(reg->var_off); in process_spin_lock()
6037 u64 val = reg->var_off.value; in process_spin_lock()
6112 bool is_const = tnum_is_const(reg->var_off); in process_timer_func()
6114 u64 val = reg->var_off.value; in process_timer_func()
6153 if (!tnum_is_const(reg->var_off)) { in process_kptr_func()
6170 kptr_off = reg->off + reg->var_off.value; in process_kptr_func()
6915 if (!tnum_is_const(reg->var_off)) { in check_func_arg()
6920 meta->mem_size = reg->var_off.value; in check_func_arg()
6948 if (!tnum_is_const(reg->var_off)) { in check_func_arg()
6964 map_off = reg->off + reg->var_off.value; in check_func_arg()
7872 if (!tnum_in(range, r0->var_off)) { in prepare_func_exit()
7991 val = reg->var_off.value; in record_func_key()
8041 if (data_len_reg->var_off.value % 8) in check_bpf_snprintf_call()
8043 num_args = data_len_reg->var_off.value / 8; in check_bpf_snprintf_call()
8048 fmt_map_off = fmt_reg->off + fmt_reg->var_off.value; in check_bpf_snprintf_call()
9082 if (!tnum_is_const(reg->var_off)) { in process_kf_arg_ptr_to_kptr()
9087 kptr_field = btf_record_find(reg->map_ptr->record, reg->off + reg->var_off.value, BPF_KPTR); in process_kf_arg_ptr_to_kptr()
9090 reg->off + reg->var_off.value); in process_kf_arg_ptr_to_kptr()
9331 if (!tnum_is_const(reg->var_off)) { in __process_kf_arg_ptr_to_graph_root()
9339 head_off = reg->off + reg->var_off.value; in __process_kf_arg_ptr_to_graph_root()
9399 if (!tnum_is_const(reg->var_off)) { in __process_kf_arg_ptr_to_graph_node()
9406 node_off = reg->off + reg->var_off.value; in __process_kf_arg_ptr_to_graph_node()
9501 if (!tnum_is_const(reg->var_off)) { in check_kfunc_args()
9509 meta->arg_constant.value = reg->var_off.value; in check_kfunc_args()
9523 if (!tnum_is_const(reg->var_off)) { in check_kfunc_args()
9528 meta->r0_size = reg->var_off.value; in check_kfunc_args()
10113 bool known = tnum_is_const(reg->var_off); in check_reg_sane_offset()
10114 s64 val = reg->var_off.value; in check_reg_sane_offset()
10165 ptr_limit = -(ptr_reg->var_off.value + ptr_reg->off); in retrieve_ptr_limit()
10258 bool off_is_imm = tnum_is_const(off_reg->var_off); in sanitize_ptr_alu()
10278 if (!tnum_is_const(off_reg->var_off) && in sanitize_ptr_alu()
10412 if (!tnum_is_const(reg->var_off)) { in check_stack_access_for_ptr_arithmetic()
10415 tnum_strn(tn_buf, sizeof(tn_buf), reg->var_off); in check_stack_access_for_ptr_arithmetic()
10445 dst_reg->off + dst_reg->var_off.value)) in sanitize_check_bounds()
10475 bool known = tnum_is_const(off_reg->var_off); in adjust_ptr_min_max_vals()
10565 dst_reg->var_off = ptr_reg->var_off; in adjust_ptr_min_max_vals()
10595 dst_reg->var_off = tnum_add(ptr_reg->var_off, off_reg->var_off); in adjust_ptr_min_max_vals()
10627 dst_reg->var_off = ptr_reg->var_off; in adjust_ptr_min_max_vals()
10654 dst_reg->var_off = tnum_sub(ptr_reg->var_off, off_reg->var_off); in adjust_ptr_min_max_vals()
10868 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_and()
10869 bool dst_known = tnum_subreg_is_const(dst_reg->var_off); in scalar32_min_max_and()
10870 struct tnum var32_off = tnum_subreg(dst_reg->var_off); in scalar32_min_max_and()
10902 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_and()
10903 bool dst_known = tnum_is_const(dst_reg->var_off); in scalar_min_max_and()
10908 __mark_reg_known(dst_reg, dst_reg->var_off.value); in scalar_min_max_and()
10915 dst_reg->umin_value = dst_reg->var_off.value; in scalar_min_max_and()
10937 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_or()
10938 bool dst_known = tnum_subreg_is_const(dst_reg->var_off); in scalar32_min_max_or()
10939 struct tnum var32_off = tnum_subreg(dst_reg->var_off); in scalar32_min_max_or()
10971 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_or()
10972 bool dst_known = tnum_is_const(dst_reg->var_off); in scalar_min_max_or()
10977 __mark_reg_known(dst_reg, dst_reg->var_off.value); in scalar_min_max_or()
10985 dst_reg->umax_value = dst_reg->var_off.value | dst_reg->var_off.mask; in scalar_min_max_or()
11006 bool src_known = tnum_subreg_is_const(src_reg->var_off); in scalar32_min_max_xor()
11007 bool dst_known = tnum_subreg_is_const(dst_reg->var_off); in scalar32_min_max_xor()
11008 struct tnum var32_off = tnum_subreg(dst_reg->var_off); in scalar32_min_max_xor()
11035 bool src_known = tnum_is_const(src_reg->var_off); in scalar_min_max_xor()
11036 bool dst_known = tnum_is_const(dst_reg->var_off); in scalar_min_max_xor()
11041 __mark_reg_known(dst_reg, dst_reg->var_off.value); in scalar_min_max_xor()
11046 dst_reg->umin_value = dst_reg->var_off.value; in scalar_min_max_xor()
11047 dst_reg->umax_value = dst_reg->var_off.value | dst_reg->var_off.mask; in scalar_min_max_xor()
11087 struct tnum subreg = tnum_subreg(dst_reg->var_off); in scalar32_min_max_lsh()
11090 dst_reg->var_off = tnum_subreg(tnum_lshift(subreg, umin_val)); in scalar32_min_max_lsh()
11139 dst_reg->var_off = tnum_lshift(dst_reg->var_off, umin_val); in scalar_min_max_lsh()
11147 struct tnum subreg = tnum_subreg(dst_reg->var_off); in scalar32_min_max_rsh()
11168 dst_reg->var_off = tnum_rshift(subreg, umin_val); in scalar32_min_max_rsh()
11198 dst_reg->var_off = tnum_rshift(dst_reg->var_off, umin_val); in scalar_min_max_rsh()
11221 dst_reg->var_off = tnum_arshift(tnum_subreg(dst_reg->var_off), umin_val, 32); in scalar32_min_max_arsh()
11244 dst_reg->var_off = tnum_arshift(dst_reg->var_off, umin_val, 64); in scalar_min_max_arsh()
11291 src_known = tnum_subreg_is_const(src_reg.var_off); in adjust_scalar_min_max_vals()
11302 src_known = tnum_is_const(src_reg.var_off); in adjust_scalar_min_max_vals()
11344 dst_reg->var_off = tnum_add(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
11349 dst_reg->var_off = tnum_sub(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
11352 dst_reg->var_off = tnum_mul(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
11357 dst_reg->var_off = tnum_and(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
11362 dst_reg->var_off = tnum_or(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
11367 dst_reg->var_off = tnum_xor(dst_reg->var_off, src_reg.var_off); in adjust_scalar_min_max_vals()
11765 struct tnum subreg = tnum_subreg(reg->var_off); in is_branch32_taken()
11843 if (tnum_is_const(reg->var_off)) in is_branch64_taken()
11844 return !!tnum_equals_const(reg->var_off, val); in is_branch64_taken()
11847 if (tnum_is_const(reg->var_off)) in is_branch64_taken()
11848 return !tnum_equals_const(reg->var_off, val); in is_branch64_taken()
11851 if ((~reg->var_off.mask & reg->var_off.value) & val) in is_branch64_taken()
11853 if (!((reg->var_off.mask | reg->var_off.value) & val)) in is_branch64_taken()
12015 struct tnum false_32off = tnum_subreg(false_reg->var_off); in reg_set_min_max()
12016 struct tnum false_64off = false_reg->var_off; in reg_set_min_max()
12017 struct tnum true_32off = tnum_subreg(true_reg->var_off); in reg_set_min_max()
12018 struct tnum true_64off = true_reg->var_off; in reg_set_min_max()
12044 true_32off = tnum_subreg(true_reg->var_off); in reg_set_min_max()
12047 true_64off = true_reg->var_off; in reg_set_min_max()
12053 false_32off = tnum_subreg(false_reg->var_off); in reg_set_min_max()
12056 false_64off = false_reg->var_off; in reg_set_min_max()
12153 false_reg->var_off = tnum_or(tnum_clear_subreg(false_64off), in reg_set_min_max()
12155 true_reg->var_off = tnum_or(tnum_clear_subreg(true_64off), in reg_set_min_max()
12160 false_reg->var_off = false_64off; in reg_set_min_max()
12161 true_reg->var_off = true_64off; in reg_set_min_max()
12195 src_reg->var_off = dst_reg->var_off = tnum_intersect(src_reg->var_off, in __reg_combine_min_max()
12196 dst_reg->var_off); in __reg_combine_min_max()
12232 if (WARN_ON_ONCE(reg->smin_value || reg->smax_value || !tnum_equals_const(reg->var_off, 0))) in mark_ptr_or_null_reg()
12458 is_jmp32 && tnum_is_const(tnum_subreg(src_reg->var_off))) { in check_cond_jmp_op()
12460 tnum_subreg(src_reg->var_off).value, in check_cond_jmp_op()
12464 !is_jmp32 && tnum_is_const(src_reg->var_off)) { in check_cond_jmp_op()
12466 src_reg->var_off.value, in check_cond_jmp_op()
12530 if (tnum_is_const(src_reg->var_off) || in check_cond_jmp_op()
12532 tnum_is_const(tnum_subreg(src_reg->var_off)))) in check_cond_jmp_op()
12535 src_reg->var_off.value, in check_cond_jmp_op()
12536 tnum_subreg(src_reg->var_off).value, in check_cond_jmp_op()
12538 else if (tnum_is_const(dst_reg->var_off) || in check_cond_jmp_op()
12540 tnum_is_const(tnum_subreg(dst_reg->var_off)))) in check_cond_jmp_op()
12543 dst_reg->var_off.value, in check_cond_jmp_op()
12544 tnum_subreg(dst_reg->var_off).value, in check_cond_jmp_op()
12889 if (!tnum_in(tnum_const(0), reg->var_off)) { in check_return_code()
12983 if (!tnum_in(range, reg->var_off)) { in check_return_code()
12993 tnum_in(enforce_attach_type_range, reg->var_off)) in check_return_code()
13877 tnum_in(rold->var_off, rcur->var_off); in regsafe()
13883 return memcmp(rold, rcur, offsetof(struct bpf_reg_state, var_off)) == 0 && in regsafe()
13885 tnum_in(rold->var_off, rcur->var_off) && in regsafe()
13907 tnum_in(rold->var_off, rcur->var_off); in regsafe()