Lines Matching refs:ref_obj_id

198 static int release_reference(struct bpf_verifier_env *env, int ref_obj_id);
277 int ref_obj_id; member
297 u32 ref_obj_id; member
331 u32 ref_obj_id; member
758 state->stack[spi].spilled_ptr.ref_obj_id = id; in mark_stack_slots_dynptr()
759 state->stack[spi - 1].spilled_ptr.ref_obj_id = id; in mark_stack_slots_dynptr()
808 int spi, ref_obj_id, i; in unmark_stack_slots_dynptr() local
819 ref_obj_id = state->stack[spi].spilled_ptr.ref_obj_id; in unmark_stack_slots_dynptr()
829 WARN_ON_ONCE(release_reference(env, ref_obj_id)); in unmark_stack_slots_dynptr()
833 if (state->stack[i].spilled_ptr.ref_obj_id != ref_obj_id) in unmark_stack_slots_dynptr()
1032 st->ref_obj_id = i == 0 ? id : 0; in mark_stack_slots_iter()
1062 WARN_ON_ONCE(release_reference(env, st->ref_obj_id)); in unmark_stack_slots_iter()
1122 if (i == 0 && !st->ref_obj_id) in is_iter_reg_valid_init()
1124 if (i != 0 && st->ref_obj_id) in is_iter_reg_valid_init()
1777 reg->ref_obj_id = 0; in __mark_reg_known()
2342 reg->ref_obj_id = 0; in __mark_reg_unknown_imprecise()
5846 if (reg->ref_obj_id) in is_trusted_reg()
6659 !(reg->type & MEM_RCU) && !reg->ref_obj_id) { in check_ptr_to_btf_access()
7942 return state->stack[spi].spilled_ptr.ref_obj_id; in iter_ref_obj_id()
8047 meta->ref_obj_id = iter_ref_obj_id(env, reg, spi); in process_iter_arg()
8715 return reg->ref_obj_id; in dynptr_ref_obj_id()
8719 return state->stack[spi].spilled_ptr.ref_obj_id; in dynptr_ref_obj_id()
8860 if (spi < 0 || !state->stack[spi].spilled_ptr.ref_obj_id) { in check_func_arg()
8868 } else if (!reg->ref_obj_id && !register_is_null(reg)) { in check_func_arg()
8880 if (reg->ref_obj_id && base_type(arg_type) != ARG_KPTR_XCHG_DEST) { in check_func_arg()
8881 if (meta->ref_obj_id) { in check_func_arg()
8883 regno, reg->ref_obj_id, in check_func_arg()
8884 meta->ref_obj_id); in check_func_arg()
8887 meta->ref_obj_id = reg->ref_obj_id; in check_func_arg()
9468 int ref_obj_id) in release_reference() argument
9474 err = release_reference_state(cur_func(env), ref_obj_id); in release_reference()
9479 if (reg->ref_obj_id == ref_obj_id) in release_reference()
10549 } else if (func_id == BPF_FUNC_kptr_xchg && meta.ref_obj_id) { in check_helper_call()
10550 u32 ref_obj_id = meta.ref_obj_id; in check_helper_call() local
10555 err = release_reference_state(cur_func(env), ref_obj_id); in check_helper_call()
10558 if (reg->ref_obj_id == ref_obj_id) { in check_helper_call()
10560 reg->ref_obj_id = 0; in check_helper_call()
10569 } else if (meta.ref_obj_id) { in check_helper_call()
10570 err = release_reference(env, meta.ref_obj_id); in check_helper_call()
10656 int id, ref_obj_id; in check_helper_call() local
10667 if (meta.ref_obj_id) { in check_helper_call()
10678 ref_obj_id = dynptr_ref_obj_id(env, reg); in check_helper_call()
10679 if (ref_obj_id < 0) { in check_helper_call()
10681 return ref_obj_id; in check_helper_call()
10685 meta.ref_obj_id = ref_obj_id; in check_helper_call()
10888 regs[BPF_REG_0].ref_obj_id = meta.ref_obj_id; in check_helper_call()
10897 regs[BPF_REG_0].ref_obj_id = id; in check_helper_call()
11488 if ((is_kfunc_release(meta) && reg->ref_obj_id) || in process_kf_arg_ptr_to_btf_id()
11535 static int ref_convert_owning_non_owning(struct bpf_verifier_env *env, u32 ref_obj_id) in ref_convert_owning_non_owning() argument
11543 if (!ref_obj_id) { in ref_convert_owning_non_owning()
11550 if (state->refs[i].id != ref_obj_id) in ref_convert_owning_non_owning()
11557 if (reg->ref_obj_id == ref_obj_id) { in ref_convert_owning_non_owning()
11558 reg->ref_obj_id = 0; in ref_convert_owning_non_owning()
12010 if (reg->ref_obj_id) { in check_kfunc_args()
12011 if (is_kfunc_release(meta) && meta->ref_obj_id) { in check_kfunc_args()
12013 regno, reg->ref_obj_id, in check_kfunc_args()
12014 meta->ref_obj_id); in check_kfunc_args()
12017 meta->ref_obj_id = reg->ref_obj_id; in check_kfunc_args()
12096 if (is_kfunc_release(meta) && reg->ref_obj_id) in check_kfunc_args()
12132 if (!reg->ref_obj_id) { in check_kfunc_args()
12166 clone_ref_obj_id = meta->initialized_dynptr.ref_obj_id; in check_kfunc_args()
12186 meta->initialized_dynptr.ref_obj_id = dynptr_ref_obj_id(env, reg); in check_kfunc_args()
12208 if (reg->type == (PTR_TO_BTF_ID | MEM_ALLOC) && !reg->ref_obj_id) { in check_kfunc_args()
12222 if (reg->type == (PTR_TO_BTF_ID | MEM_ALLOC) && !reg->ref_obj_id) { in check_kfunc_args()
12235 if (!reg->ref_obj_id) { in check_kfunc_args()
12245 if (!type_is_non_owning_ref(reg->type) || reg->ref_obj_id) { in check_kfunc_args()
12258 if (!reg->ref_obj_id) { in check_kfunc_args()
12563 err = release_reference(env, regs[meta.release_regno].ref_obj_id); in check_kfunc_call()
12574 release_ref_obj_id = regs[BPF_REG_2].ref_obj_id; in check_kfunc_call()
12822 if (meta.ref_obj_id) in check_kfunc_call()
12823 regs[BPF_REG_0].ref_obj_id = meta.ref_obj_id; in check_kfunc_call()
12855 regs[BPF_REG_0].ref_obj_id = id; in check_kfunc_call()
15110 reg->ref_obj_id = 0; in mark_ptr_or_null_reg()
15137 u32 ref_obj_id = regs[regno].ref_obj_id; in mark_ptr_or_null_regs() local
15140 if (ref_obj_id && ref_obj_id == id && is_null) in mark_ptr_or_null_regs()
17207 check_ids(rold->ref_obj_id, rcur->ref_obj_id, idmap); in regs_exact()
17311 check_ids(rold->ref_obj_id, rcur->ref_obj_id, idmap); in regsafe()
17476 !check_ids(old_reg->ref_obj_id, cur_reg->ref_obj_id, idmap)) in stacksafe()
17492 !check_ids(old_reg->ref_obj_id, cur_reg->ref_obj_id, idmap)) in stacksafe()