Lines Matching refs:err
713 int spi, i, err; in mark_stack_slots_dynptr() local
728 err = destroy_if_dynptr_stack_slot(env, state, spi); in mark_stack_slots_dynptr()
729 if (err) in mark_stack_slots_dynptr()
730 return err; in mark_stack_slots_dynptr()
731 err = destroy_if_dynptr_stack_slot(env, state, spi - 1); in mark_stack_slots_dynptr()
732 if (err) in mark_stack_slots_dynptr()
733 return err; in mark_stack_slots_dynptr()
1336 int id, err; in acquire_reference_state() local
1338 err = resize_reference_state(state, state->acquired_refs + 1); in acquire_reference_state()
1339 if (err) in acquire_reference_state()
1340 return err; in acquire_reference_state()
1407 int err; in copy_func_state() local
1410 err = copy_reference_state(dst, src); in copy_func_state()
1411 if (err) in copy_func_state()
1412 return err; in copy_func_state()
1420 int i, err; in copy_verifier_state() local
1460 err = copy_func_state(dst, src->frame[i]); in copy_verifier_state()
1461 if (err) in copy_verifier_state()
1462 return err; in copy_verifier_state()
1681 int err; in pop_stack() local
1687 err = copy_verifier_state(cur, &head->st); in pop_stack()
1688 if (err) in pop_stack()
1689 return err; in pop_stack()
1711 int err; in push_stack() local
1715 goto err; in push_stack()
1723 err = copy_verifier_state(&elem->st, cur); in push_stack()
1724 if (err) in push_stack()
1725 goto err; in push_stack()
1730 goto err; in push_stack()
1745 err: in push_stack()
2482 goto err; in push_async_cb()
2494 goto err; in push_async_cb()
2505 goto err; in push_async_cb()
2512 err: in push_async_cb()
2829 int err; in add_kfunc_call() local
2926 err = bpf_dev_bound_kfunc_check(&env->log, prog_aux); in add_kfunc_call()
2927 if (err) in add_kfunc_call()
2928 return err; in add_kfunc_call()
2936 err = btf_distill_func_proto(&env->log, desc_btf, in add_kfunc_call()
2939 if (!err) in add_kfunc_call()
2942 return err; in add_kfunc_call()
3206 int err, i; in mark_iter_read() local
3211 err = mark_reg_read(env, st, st->parent, REG_LIVE_READ64); in mark_iter_read()
3212 if (err) in mark_iter_read()
3213 return err; in mark_iter_read()
4324 int i, fr, err; in __mark_chain_precision() local
4388 err = 0; in __mark_chain_precision()
4392 err = backtrack_insn(env, i, subseq_idx, hist, bt); in __mark_chain_precision()
4394 if (err == -ENOTSUPP) { in __mark_chain_precision()
4398 } else if (err) { in __mark_chain_precision()
4399 return err; in __mark_chain_precision()
4660 int i, slot = -off - 1, spi = slot / BPF_REG_SIZE, err; in check_stack_write_fixed_off() local
4695 err = destroy_if_dynptr_stack_slot(env, state, spi); in check_stack_write_fixed_off()
4696 if (err) in check_stack_write_fixed_off()
4697 return err; in check_stack_write_fixed_off()
4762 err = mark_chain_precision(env, value_regno); in check_stack_write_fixed_off()
4763 if (err) in check_stack_write_fixed_off()
4764 return err; in check_stack_write_fixed_off()
4806 int i, err; in check_stack_write_var_off() local
4829 err = destroy_if_dynptr_stack_slot(env, state, spi); in check_stack_write_var_off()
4830 if (err) in check_stack_write_var_off()
4831 return err; in check_stack_write_var_off()
4901 err = mark_chain_precision(env, value_regno); in check_stack_write_var_off()
4902 if (err) in check_stack_write_var_off()
4903 return err; in check_stack_write_var_off()
5121 int err; in check_stack_read_var_off() local
5126 err = check_stack_range_initialized(env, ptr_regno, off, size, in check_stack_read_var_off()
5128 if (err) in check_stack_read_var_off()
5129 return err; in check_stack_read_var_off()
5153 int err; in check_stack_read() local
5180 err = check_stack_read_fixed_off(env, state, off, size, in check_stack_read()
5187 err = check_stack_read_var_off(env, ptr_regno, off, size, in check_stack_read()
5190 return err; in check_stack_read()
5210 int err; in check_stack_write() local
5214 err = check_stack_write_fixed_off(env, state, off, size, in check_stack_write()
5220 err = check_stack_write_var_off(env, state, in check_stack_write()
5224 return err; in check_stack_write()
5293 int err; in check_mem_region_access() local
5313 err = __check_mem_access(env, regno, reg->smin_value + off, size, in check_mem_region_access()
5315 if (err) { in check_mem_region_access()
5318 return err; in check_mem_region_access()
5330 err = __check_mem_access(env, regno, reg->umax_value + off, size, in check_mem_region_access()
5332 if (err) { in check_mem_region_access()
5335 return err; in check_mem_region_access()
5599 int err, i; in check_map_access() local
5601 err = check_mem_region_access(env, regno, off, size, map->value_size, in check_map_access()
5603 if (err) in check_map_access()
5604 return err; in check_map_access()
5700 int err; in check_packet_access() local
5716 err = reg->range < 0 ? -EINVAL : in check_packet_access()
5719 if (err) { in check_packet_access()
5721 return err; in check_packet_access()
5734 return err; in check_packet_access()
6098 bool err = false; in check_max_stack_depth_subprog() local
6103 err = true; in check_max_stack_depth_subprog()
6104 for (int c = 0; c < frame && !err; c++) { in check_max_stack_depth_subprog()
6106 err = true; in check_max_stack_depth_subprog()
6110 if (!err) in check_max_stack_depth_subprog()
6247 int err; in check_tp_buffer_access() local
6249 err = __check_buffer_access(env, "tracepoint", reg, regno, off, size); in check_tp_buffer_access()
6250 if (err) in check_tp_buffer_access()
6251 return err; in check_tp_buffer_access()
6266 int err; in check_buffer_access() local
6268 err = __check_buffer_access(env, buf_info, reg, regno, off, size); in check_buffer_access()
6269 if (err) in check_buffer_access()
6270 return err; in check_buffer_access()
6485 int err; in bpf_map_direct_read() local
6487 err = map->ops->map_direct_value_addr(map, &addr, off); in bpf_map_direct_read()
6488 if (err) in bpf_map_direct_read()
6489 return err; in bpf_map_direct_read()
6874 int err; in check_stack_access_within_bounds() local
6899 err = check_stack_slot_within_bounds(env, min_off, state, type); in check_stack_access_within_bounds()
6900 if (!err && max_off > 0) in check_stack_access_within_bounds()
6901 err = -EINVAL; /* out of stack access into non-negative offsets */ in check_stack_access_within_bounds()
6902 if (!err && access_size < 0) in check_stack_access_within_bounds()
6906 err = -EFAULT; /* invalid negative access size; integer overflow? */ in check_stack_access_within_bounds()
6908 if (err) { in check_stack_access_within_bounds()
6919 return err; in check_stack_access_within_bounds()
6951 int size, err = 0; in check_mem_access() local
6958 err = check_ptr_alignment(env, reg, off, size, strict_alignment_once); in check_mem_access()
6959 if (err) in check_mem_access()
6960 return err; in check_mem_access()
6971 err = check_mem_region_access(env, regno, off, size, in check_mem_access()
6973 if (err) in check_mem_access()
6974 return err; in check_mem_access()
6985 err = check_map_access_type(env, regno, off, size, t); in check_mem_access()
6986 if (err) in check_mem_access()
6987 return err; in check_mem_access()
6988 err = check_map_access(env, regno, off, size, false, ACCESS_DIRECT); in check_mem_access()
6989 if (err) in check_mem_access()
6990 return err; in check_mem_access()
6995 err = check_map_kptr_access(env, regno, value_regno, insn_idx, kptr_field); in check_mem_access()
7006 err = bpf_map_direct_read(map, map_off, size, in check_mem_access()
7008 if (err) in check_mem_access()
7009 return err; in check_mem_access()
7038 err = check_mem_region_access(env, regno, off, size, in check_mem_access()
7040 if (!err && value_regno >= 0 && (t == BPF_READ || rdonly_mem)) in check_mem_access()
7055 err = check_ptr_off_reg(env, reg, regno); in check_mem_access()
7056 if (err < 0) in check_mem_access()
7057 return err; in check_mem_access()
7059 err = check_ctx_access(env, insn_idx, off, size, t, ®_type, &btf, in check_mem_access()
7061 if (err) in check_mem_access()
7063 if (!err && t == BPF_READ && value_regno >= 0) { in check_mem_access()
7070 err = __mark_reg_s32_range(env, regs, value_regno, in check_mem_access()
7072 if (err) in check_mem_access()
7073 return err; in check_mem_access()
7098 err = check_stack_access_within_bounds(env, regno, off, size, ACCESS_DIRECT, t); in check_mem_access()
7099 if (err) in check_mem_access()
7100 return err; in check_mem_access()
7103 err = check_stack_read(env, regno, off, size, in check_mem_access()
7106 err = check_stack_write(env, regno, off, size, in check_mem_access()
7119 err = check_packet_access(env, regno, off, size, false); in check_mem_access()
7120 if (!err && t == BPF_READ && value_regno >= 0) in check_mem_access()
7130 err = check_flow_keys_access(env, off, size); in check_mem_access()
7131 if (!err && t == BPF_READ && value_regno >= 0) in check_mem_access()
7139 err = check_sock_access(env, insn_idx, regno, off, size, t); in check_mem_access()
7140 if (!err && value_regno >= 0) in check_mem_access()
7143 err = check_tp_buffer_access(env, reg, regno, off, size); in check_mem_access()
7144 if (!err && t == BPF_READ && value_regno >= 0) in check_mem_access()
7148 err = check_ptr_to_btf_access(env, regs, regno, off, size, t, in check_mem_access()
7151 err = check_ptr_to_map_access(env, regs, regno, off, size, t, in check_mem_access()
7168 err = check_buffer_access(env, reg, regno, off, size, false, in check_mem_access()
7171 if (!err && value_regno >= 0 && (rdonly_mem || t == BPF_READ)) in check_mem_access()
7182 if (!err && size < BPF_REG_SIZE && value_regno >= 0 && t == BPF_READ && in check_mem_access()
7190 return err; in check_mem_access()
7199 int err; in check_atomic() local
7224 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_atomic()
7225 if (err) in check_atomic()
7226 return err; in check_atomic()
7229 err = check_reg_arg(env, insn->dst_reg, SRC_OP); in check_atomic()
7230 if (err) in check_atomic()
7231 return err; in check_atomic()
7237 err = check_reg_arg(env, aux_reg, SRC_OP); in check_atomic()
7238 if (err) in check_atomic()
7239 return err; in check_atomic()
7270 err = check_reg_arg(env, load_reg, DST_OP); in check_atomic()
7271 if (err) in check_atomic()
7272 return err; in check_atomic()
7283 err = check_mem_access(env, insn_idx, insn->dst_reg, insn->off, in check_atomic()
7285 if (!err && load_reg >= 0) in check_atomic()
7286 err = check_mem_access(env, insn_idx, insn->dst_reg, insn->off, in check_atomic()
7289 if (err) in check_atomic()
7290 return err; in check_atomic()
7293 err = save_aux_ptr_type(env, PTR_TO_ARENA, false); in check_atomic()
7294 if (err) in check_atomic()
7295 return err; in check_atomic()
7298 err = check_mem_access(env, insn_idx, insn->dst_reg, insn->off, in check_atomic()
7300 if (err) in check_atomic()
7301 return err; in check_atomic()
7322 int err, min_off, max_off, i, j, slot, spi; in check_stack_range_initialized() local
7345 err = check_stack_access_within_bounds(env, regno, off, access_size, in check_stack_range_initialized()
7347 if (err) in check_stack_range_initialized()
7348 return err; in check_stack_range_initialized()
7574 int err; in check_mem_size_reg() local
7611 err = check_helper_mem_access(env, regno - 1, reg->umax_value, in check_mem_size_reg()
7613 if (!err) in check_mem_size_reg()
7614 err = mark_chain_precision(env, regno); in check_mem_size_reg()
7615 return err; in check_mem_size_reg()
7623 int err; in check_mem_reg() local
7637 err = check_helper_mem_access(env, regno, mem_size, BPF_READ, true, NULL); in check_mem_reg()
7638 err = err ?: check_helper_mem_access(env, regno, mem_size, BPF_WRITE, true, NULL); in check_mem_reg()
7643 return err; in check_mem_reg()
7653 int err; in check_kfunc_mem_size_reg() local
7664 err = check_mem_size_reg(env, reg, regno, BPF_READ, true, &meta); in check_kfunc_mem_size_reg()
7665 err = err ?: check_mem_size_reg(env, reg, regno, BPF_WRITE, true, &meta); in check_kfunc_mem_size_reg()
7670 return err; in check_kfunc_mem_size_reg()
7907 int err; in process_dynptr_func() local
7949 err = check_mem_access(env, insn_idx, regno, in process_dynptr_func()
7951 if (err) in process_dynptr_func()
7952 return err; in process_dynptr_func()
7955 err = mark_stack_slots_dynptr(env, reg, arg_type, insn_idx, clone_ref_obj_id); in process_dynptr_func()
7978 err = mark_dynptr_read(env, reg); in process_dynptr_func()
7980 return err; in process_dynptr_func()
8028 int spi, err, i, nr_slots, btf_id; in process_iter_arg() local
8058 err = check_mem_access(env, insn_idx, regno, in process_iter_arg()
8060 if (err) in process_iter_arg()
8061 return err; in process_iter_arg()
8064 err = mark_stack_slots_iter(env, meta, reg, insn_idx, meta->btf, btf_id, nr_slots); in process_iter_arg()
8065 if (err) in process_iter_arg()
8066 return err; in process_iter_arg()
8071 err = is_iter_reg_valid_init(env, reg, meta->btf, btf_id, nr_slots); in process_iter_arg()
8072 switch (err) { in process_iter_arg()
8078 return err; in process_iter_arg()
8081 return err; in process_iter_arg()
8083 return err; in process_iter_arg()
8090 err = mark_iter_read(env, reg, spi, nr_slots); in process_iter_arg()
8091 if (err) in process_iter_arg()
8092 return err; in process_iter_arg()
8100 err = unmark_stack_slots_iter(env, reg, nr_slots); in process_iter_arg()
8101 if (err) in process_iter_arg()
8102 return err; in process_iter_arg()
8794 int err; in check_reg_const_str() local
8817 err = check_map_access(env, regno, reg->off, in check_reg_const_str()
8820 if (err) in check_reg_const_str()
8821 return err; in check_reg_const_str()
8824 err = map->ops->map_direct_value_addr(map, &map_addr, map_off); in check_reg_const_str()
8825 if (err) { in check_reg_const_str()
8827 return err; in check_reg_const_str()
8848 int err = 0; in check_func_arg() local
8853 err = check_reg_arg(env, regno, SRC_OP); in check_func_arg()
8854 if (err) in check_func_arg()
8855 return err; in check_func_arg()
8873 err = resolve_map_arg_type(env, meta, &arg_type); in check_func_arg()
8874 if (err) in check_func_arg()
8875 return err; in check_func_arg()
8889 err = check_reg_type(env, regno, arg_type, arg_btf_id, meta); in check_func_arg()
8890 if (err) in check_func_arg()
8891 return err; in check_func_arg()
8893 err = check_func_arg_reg_off(env, reg, regno, arg_type); in check_func_arg()
8894 if (err) in check_func_arg()
8895 return err; in check_func_arg()
8981 err = check_helper_mem_access(env, regno, meta->map_ptr->key_size, in check_func_arg()
8997 err = check_helper_mem_access(env, regno, meta->map_ptr->value_size, in check_func_arg()
9015 err = process_spin_lock(env, regno, true); in check_func_arg()
9016 if (err) in check_func_arg()
9017 return err; in check_func_arg()
9019 err = process_spin_lock(env, regno, false); in check_func_arg()
9020 if (err) in check_func_arg()
9021 return err; in check_func_arg()
9028 err = process_timer_func(env, regno, meta); in check_func_arg()
9029 if (err) in check_func_arg()
9030 return err; in check_func_arg()
9041 err = check_helper_mem_access(env, regno, fn->arg_size[arg], in check_func_arg()
9044 if (err) in check_func_arg()
9045 return err; in check_func_arg()
9047 err = check_ptr_alignment(env, reg, 0, fn->arg_size[arg], true); in check_func_arg()
9051 err = check_mem_size_reg(env, reg, regno, in check_func_arg()
9057 err = check_mem_size_reg(env, reg, regno, in check_func_arg()
9063 err = process_dynptr_func(env, regno, insn_idx, arg_type, 0); in check_func_arg()
9064 if (err) in check_func_arg()
9065 return err; in check_func_arg()
9074 err = mark_chain_precision(env, regno); in check_func_arg()
9075 if (err) in check_func_arg()
9076 return err; in check_func_arg()
9080 err = check_reg_const_str(env, reg, regno); in check_func_arg()
9081 if (err) in check_func_arg()
9082 return err; in check_func_arg()
9086 err = process_kptr_func(env, regno, meta); in check_func_arg()
9087 if (err) in check_func_arg()
9088 return err; in check_func_arg()
9092 return err; in check_func_arg()
9522 int err; in release_reference() local
9524 err = release_reference_state(cur_func(env), ref_obj_id); in release_reference()
9525 if (err) in release_reference()
9526 return err; in release_reference()
9573 int err; in setup_func_entry() local
9603 err = copy_reference_state(callee, caller); in setup_func_entry()
9604 err = err ?: set_callee_state_cb(env, caller, callee, callsite); in setup_func_entry()
9605 if (err) in setup_func_entry()
9616 return err; in setup_func_entry()
9688 int err; in btf_check_func_arg_match() local
9694 err = check_reg_type(env, regno, arg->arg_type, &arg->btf_id, &meta); in btf_check_func_arg_match()
9695 err = err ?: check_func_arg_reg_off(env, reg, regno, arg->arg_type); in btf_check_func_arg_match()
9696 if (err) in btf_check_func_arg_match()
9697 return err; in btf_check_func_arg_match()
9721 int err; in btf_check_subprog_call() local
9733 err = btf_check_func_arg_match(env, subprog, btf, regs); in btf_check_subprog_call()
9738 if (err) in btf_check_subprog_call()
9740 return err; in btf_check_subprog_call()
9749 int err; in push_callback_call() local
9752 err = btf_check_subprog_call(env, subprog, caller->regs); in push_callback_call()
9753 if (err == -EFAULT) in push_callback_call()
9754 return err; in push_callback_call()
9787 err = set_callee_state_cb(env, caller, callee, insn_idx); in push_callback_call()
9788 if (err) in push_callback_call()
9789 return err; in push_callback_call()
9801 err = setup_func_entry(env, subprog, insn_idx, set_callee_state_cb, in push_callback_call()
9803 if (err) in push_callback_call()
9804 return err; in push_callback_call()
9817 int err, subprog, target_insn; in check_func_call() local
9827 err = btf_check_subprog_call(env, subprog, caller->regs); in check_func_call()
9828 if (err == -EFAULT) in check_func_call()
9829 return err; in check_func_call()
9847 if (err) { in check_func_call()
9850 return err; in check_func_call()
9870 err = setup_func_entry(env, subprog, *insn_idx, set_callee_state, state); in check_func_call()
9871 if (err) in check_func_call()
9872 return err; in check_func_call()
9937 int err; in set_map_elem_callback_state() local
9947 err = map->ops->map_set_for_each_callback_args(env, caller, callee); in set_map_elem_callback_state()
9948 if (err) in set_map_elem_callback_state()
9949 return err; in set_map_elem_callback_state()
10131 int err; in prepare_func_exit() local
10154 err = mark_reg_read(env, r0, r0->parent, REG_LIVE_READ64); in prepare_func_exit()
10155 err = err ?: mark_chain_precision(env, BPF_REG_0); in prepare_func_exit()
10156 if (err) in prepare_func_exit()
10157 return err; in prepare_func_exit()
10182 err = copy_reference_state(caller, callee); in prepare_func_exit()
10183 if (err) in prepare_func_exit()
10184 return err; in prepare_func_exit()
10221 err = widen_imprecise_scalars(env, prev_st, state); in prepare_func_exit()
10222 if (err) in prepare_func_exit()
10223 return err; in prepare_func_exit()
10320 int err; in record_func_key() local
10338 err = mark_chain_precision(env, BPF_REG_3); in record_func_key()
10339 if (err) in record_func_key()
10340 return err; in record_func_key()
10375 int err, fmt_map_off, num_args; in check_bpf_snprintf_call() local
10388 err = fmt_map->ops->map_direct_value_addr(fmt_map, &fmt_addr, in check_bpf_snprintf_call()
10390 if (err) { in check_bpf_snprintf_call()
10399 err = bpf_bprintf_prepare(fmt, UINT_MAX, NULL, num_args, &data); in check_bpf_snprintf_call()
10400 if (err < 0) in check_bpf_snprintf_call()
10403 return err; in check_bpf_snprintf_call()
10487 int i, err, func_id; in check_helper_call() local
10491 err = get_helper_proto(env, insn->imm, &fn); in check_helper_call()
10492 if (err == -ERANGE) { in check_helper_call()
10497 if (err) { in check_helper_call()
10500 return err; in check_helper_call()
10530 err = check_func_proto(fn, func_id); in check_helper_call()
10531 if (err) { in check_helper_call()
10534 return err; in check_helper_call()
10562 err = check_func_arg(env, i, &meta, fn, insn_idx); in check_helper_call()
10563 if (err) in check_helper_call()
10564 return err; in check_helper_call()
10567 err = record_func_map(env, &meta, func_id, insn_idx); in check_helper_call()
10568 if (err) in check_helper_call()
10569 return err; in check_helper_call()
10571 err = record_func_key(env, &meta, func_id, insn_idx); in check_helper_call()
10572 if (err) in check_helper_call()
10573 return err; in check_helper_call()
10579 err = check_mem_access(env, insn_idx, meta.regno, i, BPF_B, in check_helper_call()
10581 if (err) in check_helper_call()
10582 return err; in check_helper_call()
10588 err = -EINVAL; in check_helper_call()
10598 err = unmark_stack_slots_dynptr(env, ®s[meta.release_regno]); in check_helper_call()
10605 err = release_reference_state(cur_func(env), ref_obj_id); in check_helper_call()
10606 if (!err) { in check_helper_call()
10620 err = release_reference(env, meta.ref_obj_id); in check_helper_call()
10625 err = 0; in check_helper_call()
10627 if (err) { in check_helper_call()
10630 return err; in check_helper_call()
10641 err = check_reference_leak(env, false); in check_helper_call()
10642 if (err) { in check_helper_call()
10644 return err; in check_helper_call()
10667 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_helper_call()
10671 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_helper_call()
10675 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_helper_call()
10679 err = check_bpf_snprintf_call(env, regs); in check_helper_call()
10686 err = mark_chain_precision(env, BPF_REG_1); in check_helper_call()
10687 if (err) in check_helper_call()
10688 return err; in check_helper_call()
10690 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_helper_call()
10793 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_helper_call()
10798 if (err) in check_helper_call()
10799 return err; in check_helper_call()
10965 err = do_refine_retval_range(env, regs, fn->ret_type, func_id, &meta); in check_helper_call()
10966 if (err) in check_helper_call()
10967 return err; in check_helper_call()
10969 err = check_map_func_compatibility(env, meta.map_ptr, func_id); in check_helper_call()
10970 if (err) in check_helper_call()
10971 return err; in check_helper_call()
10979 err = get_callchain_buffers(sysctl_perf_event_max_stack); in check_helper_call()
10982 err = -ENOTSUPP; in check_helper_call()
10985 if (err) { in check_helper_call()
10987 return err; in check_helper_call()
12510 int err, insn_idx = *insn_idx_p; in check_kfunc_call() local
12519 err = fetch_kfunc_meta(env, insn, &meta, &func_name); in check_kfunc_call()
12520 if (err == -EACCES && func_name) in check_kfunc_call()
12522 if (err) in check_kfunc_call()
12523 return err; in check_kfunc_call()
12541 err = check_kfunc_args(env, &meta, insn_idx); in check_kfunc_call()
12542 if (err < 0) in check_kfunc_call()
12543 return err; in check_kfunc_call()
12546 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_kfunc_call()
12548 if (err) { in check_kfunc_call()
12551 return err; in check_kfunc_call()
12561 err = push_callback_call(env, insn, insn_idx, meta.subprogno, in check_kfunc_call()
12563 if (err) { in check_kfunc_call()
12566 return err; in check_kfunc_call()
12628 err = release_reference(env, regs[meta.release_regno].ref_obj_id); in check_kfunc_call()
12629 if (err) { in check_kfunc_call()
12632 return err; in check_kfunc_call()
12642 err = ref_convert_owning_non_owning(env, release_ref_obj_id); in check_kfunc_call()
12643 if (err) { in check_kfunc_call()
12646 return err; in check_kfunc_call()
12649 err = release_reference(env, release_ref_obj_id); in check_kfunc_call()
12650 if (err) { in check_kfunc_call()
12653 return err; in check_kfunc_call()
12669 err = check_return_code(env, BPF_REG_1, "R1"); in check_kfunc_call()
12670 if (err < 0) in check_kfunc_call()
12671 return err; in check_kfunc_call()
12741 err = bpf_mem_alloc_percpu_init(&bpf_global_percpu_ma, NULL); in check_kfunc_call()
12742 if (!err) in check_kfunc_call()
12746 if (err) in check_kfunc_call()
12747 return err; in check_kfunc_call()
12751 err = bpf_mem_alloc_percpu_unit_init(&bpf_global_percpu_ma, ret_t->size); in check_kfunc_call()
12753 if (err) in check_kfunc_call()
12754 return err; in check_kfunc_call()
12952 err = process_iter_next_call(env, insn_idx, &meta); in check_kfunc_call()
12953 if (err) in check_kfunc_call()
12954 return err; in check_kfunc_call()
13116 int err; in sanitize_ptr_alu() local
13137 err = retrieve_ptr_limit(ptr_reg, &alu_limit, info->mask_to_left); in sanitize_ptr_alu()
13138 if (err < 0) in sanitize_ptr_alu()
13139 return err; in sanitize_ptr_alu()
13160 err = update_alu_sanitation_state(aux, alu_state, alu_limit); in sanitize_ptr_alu()
13161 if (err < 0) in sanitize_ptr_alu()
13162 return err; in sanitize_ptr_alu()
13213 static const char *err = "pointer arithmetic with it prohibited for !root"; in sanitize_err() local
13220 off_reg == dst_reg ? dst : src, err); in sanitize_err()
13224 off_reg == dst_reg ? src : dst, err); in sanitize_err()
13228 dst, op, err); in sanitize_err()
13232 dst, op, err); in sanitize_err()
13236 dst, err); in sanitize_err()
14231 int err; in adjust_reg_min_max_vals() local
14274 err = mark_chain_precision(env, insn->dst_reg); in adjust_reg_min_max_vals()
14275 if (err) in adjust_reg_min_max_vals()
14276 return err; in adjust_reg_min_max_vals()
14282 err = mark_chain_precision(env, insn->src_reg); in adjust_reg_min_max_vals()
14283 if (err) in adjust_reg_min_max_vals()
14284 return err; in adjust_reg_min_max_vals()
14289 err = mark_chain_precision(env, insn->src_reg); in adjust_reg_min_max_vals()
14290 if (err) in adjust_reg_min_max_vals()
14291 return err; in adjust_reg_min_max_vals()
14316 err = adjust_scalar_min_max_vals(env, insn, dst_reg, *src_reg); in adjust_reg_min_max_vals()
14317 if (err) in adjust_reg_min_max_vals()
14318 return err; in adjust_reg_min_max_vals()
14361 int err; in check_alu_op() local
14382 err = check_reg_arg(env, insn->dst_reg, SRC_OP); in check_alu_op()
14383 if (err) in check_alu_op()
14384 return err; in check_alu_op()
14393 err = check_reg_arg(env, insn->dst_reg, DST_OP); in check_alu_op()
14394 if (err) in check_alu_op()
14395 return err; in check_alu_op()
14424 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_alu_op()
14425 if (err) in check_alu_op()
14426 return err; in check_alu_op()
14435 err = check_reg_arg(env, insn->dst_reg, DST_OP_NO_MARK); in check_alu_op()
14436 if (err) in check_alu_op()
14437 return err; in check_alu_op()
14554 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_alu_op()
14555 if (err) in check_alu_op()
14556 return err; in check_alu_op()
14566 err = check_reg_arg(env, insn->dst_reg, SRC_OP); in check_alu_op()
14567 if (err) in check_alu_op()
14568 return err; in check_alu_op()
14587 err = check_reg_arg(env, insn->dst_reg, DST_OP_NO_MARK); in check_alu_op()
14588 err = err ?: adjust_reg_min_max_vals(env, insn); in check_alu_op()
14589 if (err) in check_alu_op()
14590 return err; in check_alu_op()
15125 int err; in reg_set_min_max() local
15144 err = reg_bounds_sanity_check(env, true_reg1, "true_reg1"); in reg_set_min_max()
15145 err = err ?: reg_bounds_sanity_check(env, true_reg2, "true_reg2"); in reg_set_min_max()
15146 err = err ?: reg_bounds_sanity_check(env, false_reg1, "false_reg1"); in reg_set_min_max()
15147 err = err ?: reg_bounds_sanity_check(env, false_reg2, "false_reg2"); in reg_set_min_max()
15148 return err; in reg_set_min_max()
15431 int err; in check_cond_jmp_op() local
15465 err = check_reg_arg(env, insn->dst_reg, SRC_OP); in check_cond_jmp_op()
15466 if (err) in check_cond_jmp_op()
15467 return err; in check_cond_jmp_op()
15477 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_cond_jmp_op()
15478 if (err) in check_cond_jmp_op()
15479 return err; in check_cond_jmp_op()
15506 err = mark_chain_precision(env, insn->dst_reg); in check_cond_jmp_op()
15507 if (BPF_SRC(insn->code) == BPF_X && !err && in check_cond_jmp_op()
15509 err = mark_chain_precision(env, insn->src_reg); in check_cond_jmp_op()
15510 if (err) in check_cond_jmp_op()
15511 return err; in check_cond_jmp_op()
15552 err = push_jmp_history(env, this_branch, 0, linked_regs_pack(&linked_regs)); in check_cond_jmp_op()
15553 if (err) in check_cond_jmp_op()
15554 return err; in check_cond_jmp_op()
15564 err = reg_set_min_max(env, in check_cond_jmp_op()
15575 err = reg_set_min_max(env, in check_cond_jmp_op()
15581 if (err) in check_cond_jmp_op()
15582 return err; in check_cond_jmp_op()
15666 int err; in check_ld_imm() local
15677 err = check_reg_arg(env, insn->dst_reg, DST_OP); in check_ld_imm()
15678 if (err) in check_ld_imm()
15679 return err; in check_ld_imm()
15788 int i, err; in check_ld_abs() local
15808 err = check_reg_arg(env, ctx_reg, SRC_OP); in check_ld_abs()
15809 if (err) in check_ld_abs()
15810 return err; in check_ld_abs()
15816 err = check_reference_leak(env, false); in check_ld_abs()
15817 if (err) { in check_ld_abs()
15819 return err; in check_ld_abs()
15845 err = check_reg_arg(env, insn->src_reg, SRC_OP); in check_ld_abs()
15846 if (err) in check_ld_abs()
15847 return err; in check_ld_abs()
15850 err = check_ptr_off_reg(env, ®s[ctx_reg], ctx_reg); in check_ld_abs()
15851 if (err < 0) in check_ld_abs()
15852 return err; in check_ld_abs()
15878 int err; in check_return_code() local
15906 err = check_reg_arg(env, regno, SRC_OP); in check_return_code()
15907 if (err) in check_return_code()
15908 return err; in check_return_code()
16029 err = mark_chain_precision(env, regno); in check_return_code()
16030 if (err) in check_return_code()
16031 return err; in check_return_code()
16361 int err; in mark_fastcall_pattern_for_call() local
16363 err = fetch_kfunc_meta(env, call, &meta, NULL); in mark_fastcall_pattern_for_call()
16364 if (err < 0) in mark_fastcall_pattern_for_call()
16880 int err; in check_btf_line() local
16911 err = bpf_check_uarg_tail_zero(ulinfo, expected_size, rec_size); in check_btf_line()
16912 if (err) { in check_btf_line()
16913 if (err == -E2BIG) { in check_btf_line()
16918 err = -EFAULT; in check_btf_line()
16924 err = -EFAULT; in check_btf_line()
16944 err = -EINVAL; in check_btf_line()
16952 err = -EINVAL; in check_btf_line()
16959 err = -EINVAL; in check_btf_line()
16969 err = -EINVAL; in check_btf_line()
16981 err = -EINVAL; in check_btf_line()
16992 return err; in check_btf_line()
17011 int err; in check_core_relo() local
17034 err = bpf_check_uarg_tail_zero(u_core_relo, expected_size, rec_size); in check_core_relo()
17035 if (err) { in check_core_relo()
17036 if (err == -E2BIG) { in check_core_relo()
17041 err = -EFAULT; in check_core_relo()
17047 err = -EFAULT; in check_core_relo()
17054 err = -EINVAL; in check_core_relo()
17058 err = bpf_core_apply(&ctx, &core_relo, i, in check_core_relo()
17060 if (err) in check_core_relo()
17064 return err; in check_core_relo()
17072 int err; in check_btf_info_early() local
17089 err = check_btf_func_early(env, attr, uattr); in check_btf_info_early()
17090 if (err) in check_btf_info_early()
17091 return err; in check_btf_info_early()
17099 int err; in check_btf_info() local
17107 err = check_btf_func(env, attr, uattr); in check_btf_info()
17108 if (err) in check_btf_info()
17109 return err; in check_btf_info()
17111 err = check_btf_line(env, attr, uattr); in check_btf_info()
17112 if (err) in check_btf_info()
17113 return err; in check_btf_info()
17115 err = check_core_relo(env, attr, uattr); in check_btf_info()
17116 if (err) in check_btf_info()
17117 return err; in check_btf_info()
17720 int err; in propagate_liveness_reg() local
17733 err = mark_reg_read(env, reg, parent_reg, flag); in propagate_liveness_reg()
17734 if (err) in propagate_liveness_reg()
17735 return err; in propagate_liveness_reg()
17753 int i, frame, err = 0; in propagate_liveness() local
17769 err = propagate_liveness_reg(env, &state_reg[i], in propagate_liveness()
17771 if (err < 0) in propagate_liveness()
17772 return err; in propagate_liveness()
17773 if (err == REG_LIVE_READ64) in propagate_liveness()
17782 err = propagate_liveness_reg(env, state_reg, in propagate_liveness()
17784 if (err < 0) in propagate_liveness()
17785 return err; in propagate_liveness()
17799 int i, err = 0, fr; in propagate_precision() local
17843 err = mark_chain_precision_batch(env); in propagate_precision()
17844 if (err < 0) in propagate_precision()
17845 return err; in propagate_precision()
17960 int i, j, n, err, states_cnt = 0; in is_state_visited() local
18155 err = propagate_liveness(env, &sl->state, cur); in is_state_visited()
18163 err = err ? : push_jmp_history(env, cur, 0, 0); in is_state_visited()
18164 err = err ? : propagate_precision(env, &sl->state); in is_state_visited()
18165 if (err) in is_state_visited()
18166 return err; in is_state_visited()
18250 err = copy_verifier_state(new, cur); in is_state_visited()
18251 if (err) { in is_state_visited()
18254 return err; in is_state_visited()
18387 int err; in do_check() local
18412 err = is_state_visited(env, env->insn_idx); in do_check()
18413 if (err < 0) in do_check()
18414 return err; in do_check()
18415 if (err == 1) { in do_check()
18431 err = push_jmp_history(env, state, 0, 0); in do_check()
18432 if (err) in do_check()
18433 return err; in do_check()
18470 err = bpf_prog_offload_verify_insn(env, env->insn_idx, in do_check()
18472 if (err) in do_check()
18473 return err; in do_check()
18481 err = check_alu_op(env, insn); in do_check()
18482 if (err) in do_check()
18483 return err; in do_check()
18491 err = check_reg_arg(env, insn->src_reg, SRC_OP); in do_check()
18492 if (err) in do_check()
18493 return err; in do_check()
18495 err = check_reg_arg(env, insn->dst_reg, DST_OP_NO_MARK); in do_check()
18496 if (err) in do_check()
18497 return err; in do_check()
18504 err = check_mem_access(env, env->insn_idx, insn->src_reg, in do_check()
18508 err = err ?: save_aux_ptr_type(env, src_reg_type, true); in do_check()
18509 err = err ?: reg_bounds_sanity_check(env, ®s[insn->dst_reg], "ldx"); in do_check()
18510 if (err) in do_check()
18511 return err; in do_check()
18516 err = check_atomic(env, env->insn_idx, insn); in do_check()
18517 if (err) in do_check()
18518 return err; in do_check()
18529 err = check_reg_arg(env, insn->src_reg, SRC_OP); in do_check()
18530 if (err) in do_check()
18531 return err; in do_check()
18533 err = check_reg_arg(env, insn->dst_reg, SRC_OP); in do_check()
18534 if (err) in do_check()
18535 return err; in do_check()
18540 err = check_mem_access(env, env->insn_idx, insn->dst_reg, in do_check()
18543 if (err) in do_check()
18544 return err; in do_check()
18546 err = save_aux_ptr_type(env, dst_reg_type, false); in do_check()
18547 if (err) in do_check()
18548 return err; in do_check()
18558 err = check_reg_arg(env, insn->dst_reg, SRC_OP); in do_check()
18559 if (err) in do_check()
18560 return err; in do_check()
18565 err = check_mem_access(env, env->insn_idx, insn->dst_reg, in do_check()
18568 if (err) in do_check()
18569 return err; in do_check()
18571 err = save_aux_ptr_type(env, dst_reg_type, false); in do_check()
18572 if (err) in do_check()
18573 return err; in do_check()
18600 err = check_func_call(env, insn, &env->insn_idx); in do_check()
18602 err = check_kfunc_call(env, insn, &env->insn_idx); in do_check()
18603 if (!err && is_bpf_throw_kfunc(insn)) { in do_check()
18608 err = check_helper_call(env, insn, &env->insn_idx); in do_check()
18610 if (err) in do_check()
18611 return err; in do_check()
18663 err = check_reference_leak(env, exception_exit); in do_check()
18664 if (err) in do_check()
18665 return err; in do_check()
18682 err = prepare_func_exit(env, &env->insn_idx); in do_check()
18683 if (err) in do_check()
18684 return err; in do_check()
18689 err = check_return_code(env, BPF_REG_0, "R0"); in do_check()
18690 if (err) in do_check()
18691 return err; in do_check()
18695 err = pop_stack(env, &prev_insn_idx, in do_check()
18697 if (err < 0) { in do_check()
18698 if (err != -ENOENT) in do_check()
18699 return err; in do_check()
18710 err = check_cond_jmp_op(env, insn, &env->insn_idx); in do_check()
18711 if (err) in do_check()
18712 return err; in do_check()
18718 err = check_ld_abs(env, insn); in do_check()
18719 if (err) in do_check()
18720 return err; in do_check()
18723 err = check_ld_imm(env, insn); in do_check()
18724 if (err) in do_check()
18725 return err; in do_check()
18789 int i, btf_fd, err; in check_pseudo_btf_id() local
18810 err = -ENOENT; in check_pseudo_btf_id()
18816 err = -EINVAL; in check_pseudo_btf_id()
18825 err = -ENOENT; in check_pseudo_btf_id()
18865 err = -EINVAL; in check_pseudo_btf_id()
18885 err = -E2BIG; in check_pseudo_btf_id()
18897 err = -ENXIO; in check_pseudo_btf_id()
18907 return err; in check_pseudo_btf_id()
19069 int i, err; in resolve_pseudo_ldimm64() local
19071 err = bpf_prog_calc_tag(env->prog); in resolve_pseudo_ldimm64()
19072 if (err) in resolve_pseudo_ldimm64()
19073 return err; in resolve_pseudo_ldimm64()
19104 err = check_pseudo_btf_id(env, insn, aux); in resolve_pseudo_ldimm64()
19105 if (err) in resolve_pseudo_ldimm64()
19106 return err; in resolve_pseudo_ldimm64()
19158 err = check_map_prog_compatibility(env, map, env->prog); in resolve_pseudo_ldimm64()
19159 if (err) in resolve_pseudo_ldimm64()
19160 return err; in resolve_pseudo_ldimm64()
19178 err = map->ops->map_direct_value_addr(map, &addr, off); in resolve_pseudo_ldimm64()
19179 if (err) { in resolve_pseudo_ldimm64()
19182 return err; in resolve_pseudo_ldimm64()
19528 int err; in verifier_remove_insns() local
19533 err = bpf_remove_insns(env->prog, off, cnt); in verifier_remove_insns()
19534 if (err) in verifier_remove_insns()
19535 return err; in verifier_remove_insns()
19537 err = adjust_subprog_starts_after_remove(env, off, cnt); in verifier_remove_insns()
19538 if (err) in verifier_remove_insns()
19539 return err; in verifier_remove_insns()
19541 err = bpf_adj_linfo_after_remove(env, off, cnt); in verifier_remove_insns()
19542 if (err) in verifier_remove_insns()
19543 return err; in verifier_remove_insns()
19622 int i, err; in opt_remove_dead_code() local
19633 err = verifier_remove_insns(env, i, j); in opt_remove_dead_code()
19634 if (err) in opt_remove_dead_code()
19635 return err; in opt_remove_dead_code()
19649 int i, err; in opt_remove_nops() local
19655 err = verifier_remove_insns(env, i, 1); in opt_remove_nops()
19656 if (err) in opt_remove_nops()
19657 return err; in opt_remove_nops()
20045 int err, num_exentries; in jit_subprogs() local
20089 err = bpf_prog_alloc_jited_linfo(prog); in jit_subprogs()
20090 if (err) in jit_subprogs()
20093 err = -ENOMEM; in jit_subprogs()
20170 err = -ENOTSUPP; in jit_subprogs()
20215 err = -ENOTSUPP; in jit_subprogs()
20226 err = bpf_prog_lock_ro(func[i]); in jit_subprogs()
20227 if (err) in jit_subprogs()
20295 return err; in jit_subprogs()
20306 int err = 0; in fixup_call_args() local
20310 err = jit_subprogs(env); in fixup_call_args()
20311 if (err == 0) in fixup_call_args()
20313 if (err == -EFAULT) in fixup_call_args()
20314 return err; in fixup_call_args()
20344 err = 0; in fixup_call_args()
20346 return err; in fixup_call_args()
21852 int err; in check_struct_ops_btf_id() local
21900 err = bpf_struct_ops_supported(st_ops, __btf_member_bit_offset(t, member) / 8); in check_struct_ops_btf_id()
21901 if (err) { in check_struct_ops_btf_id()
21904 return err; in check_struct_ops_btf_id()
21908 err = st_ops->check_member(t, member, prog); in check_struct_ops_btf_id()
21910 if (err) { in check_struct_ops_btf_id()
21913 return err; in check_struct_ops_btf_id()
22441 int i, len, ret = -EINVAL, err; in bpf_check() local
22613 err = bpf_vlog_finalize(&env->log, &log_true_size); in bpf_check()
22614 if (err) in bpf_check()
22615 ret = err; in bpf_check()