Lines Matching defs:ptr_reg

5181 	struct bpf_reg_state *ptr_reg = NULL, *value_reg = NULL;
5190 ptr_reg = &cur->regs[ptr_regno];
5191 min_off = ptr_reg->smin_value + off;
5192 max_off = ptr_reg->smax_value + off + size;
14206 static int retrieve_ptr_limit(const struct bpf_reg_state *ptr_reg,
14211 switch (ptr_reg->type) {
14219 ptr_limit = -(ptr_reg->var_off.value + ptr_reg->off);
14222 max = ptr_reg->map_ptr->value_size;
14224 ptr_reg->smin_value :
14225 ptr_reg->umax_value) + ptr_reg->off;
14306 const struct bpf_reg_state *ptr_reg,
14316 bool ptr_is_dst_reg = ptr_reg == dst_reg;
14342 err = retrieve_ptr_limit(ptr_reg, &alu_limit, info->mask_to_left);
14391 copy_register_state(dst_reg, ptr_reg);
14524 const struct bpf_reg_state *ptr_reg,
14532 smin_ptr = ptr_reg->smin_value, smax_ptr = ptr_reg->smax_value;
14534 umin_ptr = ptr_reg->umin_value, umax_ptr = ptr_reg->umax_value;
14564 if (ptr_reg->type & PTR_MAYBE_NULL) {
14566 dst, reg_type_str(env, ptr_reg->type));
14574 if (base_type(ptr_reg->type) == PTR_TO_MEM && (ptr_reg->type & PTR_UNTRUSTED))
14577 switch (base_type(ptr_reg->type)) {
14602 dst, reg_type_str(env, ptr_reg->type));
14609 dst_reg->type = ptr_reg->type;
14610 dst_reg->id = ptr_reg->id;
14612 if (!check_reg_sane_offset(env, off_reg, ptr_reg->type) ||
14613 !check_reg_sane_offset(env, ptr_reg, ptr_reg->type))
14620 ret = sanitize_ptr_alu(env, insn, ptr_reg, off_reg, dst_reg,
14631 if (known && (ptr_reg->off + smin_val ==
14632 (s64)(s32)(ptr_reg->off + smin_val))) {
14638 dst_reg->var_off = ptr_reg->var_off;
14639 dst_reg->off = ptr_reg->off + smin_val;
14640 dst_reg->raw = ptr_reg->raw;
14650 * from ptr_reg.
14662 dst_reg->var_off = tnum_add(ptr_reg->var_off, off_reg->var_off);
14663 dst_reg->off = ptr_reg->off;
14664 dst_reg->raw = ptr_reg->raw;
14665 if (reg_is_pkt_pointer(ptr_reg)) {
14682 if (ptr_reg->type == PTR_TO_STACK) {
14687 if (known && (ptr_reg->off - smin_val ==
14688 (s64)(s32)(ptr_reg->off - smin_val))) {
14694 dst_reg->var_off = ptr_reg->var_off;
14695 dst_reg->id = ptr_reg->id;
14696 dst_reg->off = ptr_reg->off - smin_val;
14697 dst_reg->raw = ptr_reg->raw;
14718 dst_reg->var_off = tnum_sub(ptr_reg->var_off, off_reg->var_off);
14719 dst_reg->off = ptr_reg->off;
14720 dst_reg->raw = ptr_reg->raw;
14721 if (reg_is_pkt_pointer(ptr_reg)) {
14742 if (!check_reg_sane_offset(env, dst_reg, ptr_reg->type))
15483 struct bpf_reg_state *ptr_reg = NULL, off_reg = {0};
15506 ptr_reg = dst_reg;
15535 } else if (ptr_reg) {
15555 if (ptr_reg) /* pointer += K */
15557 ptr_reg, src_reg);
15561 if (WARN_ON_ONCE(ptr_reg)) {
15563 verbose(env, "verifier internal error: unexpected ptr_reg\n");