Lines Matching refs:prog
216 const struct bpf_prog *prog; in find_linfo() local
219 prog = env->prog; in find_linfo()
220 nr_linfo = prog->aux->nr_linfo; in find_linfo()
222 if (!nr_linfo || insn_off >= prog->len) in find_linfo()
225 linfo = prog->aux->linfo; in find_linfo()
313 ltrim(btf_name_by_offset(env->prog->aux->btf, in verbose_linfo()
1113 int insn_cnt = env->prog->len; in add_subprog()
1137 struct bpf_insn *insn = env->prog->insnsi; in check_subprogs()
1138 int insn_cnt = env->prog->len; in check_subprogs()
1375 struct bpf_insn *insn = env->prog->insnsi + env->insn_idx; in check_reg_arg()
1461 struct bpf_insn *insn = env->prog->insnsi + idx; in backtrack_insn()
1754 if (i >= env->prog->len) { in __mark_chain_precision()
1902 u32 dst_reg = env->prog->insnsi[insn_idx].dst_reg; in check_stack_write()
2254 switch (env->prog->type) { in may_access_direct_pkt_data()
2337 env->prog->aux->max_pkt_offset = in check_packet_access()
2338 max_t(u32, env->prog->aux->max_pkt_offset, in check_packet_access()
2353 env->ops->is_valid_access(off, size, t, env->prog, &info)) { in check_ctx_access()
2365 if (env->prog->aux->max_ctx_offset < off + size) in check_ctx_access()
2366 env->prog->aux->max_ctx_offset = off + size; in check_ctx_access()
2612 struct bpf_insn *insn = env->prog->insnsi; in check_max_stack_depth()
2724 if (off + size > env->prog->aux->max_tp_access) in check_tp_buffer_access()
2725 env->prog->aux->max_tp_access = off + size; in check_tp_buffer_access()
3968 fn = env->ops->get_func_proto(func_id, env->prog); in check_helper_call()
3976 if (!env->prog->gpl_compatible && fn->gpl_only) { in check_helper_call()
4132 if (func_id == BPF_FUNC_get_stack && !env->prog->has_callchain_buf) { in check_helper_call()
4147 env->prog->has_callchain_buf = true; in check_helper_call()
6053 if (!may_access_skb(env->prog->type)) { in check_ld_abs()
6141 switch (env->prog->type) { in check_return_code()
6143 if (env->prog->expected_attach_type == BPF_CGROUP_UDP4_RECVMSG || in check_return_code()
6144 env->prog->expected_attach_type == BPF_CGROUP_UDP6_RECVMSG) in check_return_code()
6148 if (env->prog->expected_attach_type == BPF_CGROUP_INET_EGRESS) { in check_return_code()
6187 env->prog->enforce_expected_attach_type = 1; in check_return_code()
6233 return env->prog->len; in state_htab_size()
6268 if (w < 0 || w >= env->prog->len) { in push_insn()
6282 if (env->cfg.cur_stack >= env->prog->len) in push_insn()
6308 struct bpf_insn *insns = env->prog->insnsi; in check_cfg()
6309 int insn_cnt = env->prog->len; in check_cfg()
6442 struct bpf_prog *prog; in check_btf_func() local
6465 prog = env->prog; in check_btf_func()
6466 btf = prog->aux->btf; in check_btf_func()
6530 prog->aux->func_info = krecord; in check_btf_func()
6531 prog->aux->func_info_cnt = nfuncs; in check_btf_func()
6543 if (!env->prog->aux->func_info) in adjust_btf_func()
6547 env->prog->aux->func_info[i].insn_off = env->subprog_info[i].start; in adjust_btf_func()
6561 struct bpf_prog *prog; in check_btf_line() local
6584 prog = env->prog; in check_btf_line()
6585 btf = prog->aux->btf; in check_btf_line()
6621 linfo[i].insn_off >= prog->len) { in check_btf_line()
6624 prog->len); in check_btf_line()
6629 if (!prog->insnsi[linfo[i].insn_off].code) { in check_btf_line()
6666 prog->aux->linfo = linfo; in check_btf_line()
6667 prog->aux->nr_linfo = nr_linfo; in check_btf_line()
6689 env->prog->aux->btf = btf; in check_btf_info()
7502 struct bpf_insn *insns = env->prog->insnsi; in do_check()
7504 int insn_cnt = env->prog->len; in do_check()
7596 if (bpf_prog_is_dev_bound(env->prog->aux)) { in do_check()
7852 env->prog->aux->stack_depth = env->subprog_info[0].stack_depth; in do_check()
7879 struct bpf_prog *prog) in check_map_prog_compatibility() argument
7887 if (prog->type == BPF_PROG_TYPE_PERF_EVENT) { in check_map_prog_compatibility()
7899 if ((is_tracing_prog_type(prog->type) || in check_map_prog_compatibility()
7900 prog->type == BPF_PROG_TYPE_SOCKET_FILTER) && in check_map_prog_compatibility()
7906 if ((bpf_prog_is_dev_bound(prog->aux) || bpf_map_is_dev_bound(map)) && in check_map_prog_compatibility()
7907 !bpf_offload_prog_map_match(prog, map)) { in check_map_prog_compatibility()
7926 struct bpf_insn *insn = env->prog->insnsi; in replace_map_fd_with_map_ptr()
7927 int insn_cnt = env->prog->len; in replace_map_fd_with_map_ptr()
7930 err = bpf_prog_calc_tag(env->prog); in replace_map_fd_with_map_ptr()
7985 err = check_map_prog_compatibility(env, map, env->prog); in replace_map_fd_with_map_ptr()
8053 bpf_cgroup_storage_assign(env->prog, map)) { in replace_map_fd_with_map_ptr()
8087 if (!env->prog->aux->cgroup_storage[stype]) in release_maps()
8089 bpf_cgroup_storage_release(env->prog, in release_maps()
8090 env->prog->aux->cgroup_storage[stype]); in release_maps()
8100 struct bpf_insn *insn = env->prog->insnsi; in convert_pseudo_ld_imm64()
8101 int insn_cnt = env->prog->len; in convert_pseudo_ld_imm64()
8165 new_prog = bpf_patch_insn_single(env->prog, off, patch, len); in bpf_patch_insn_data()
8199 struct bpf_prog_aux *aux = env->prog->aux; in adjust_subprog_starts_after_remove()
8238 struct bpf_prog *prog = env->prog; in bpf_adj_linfo_after_remove() local
8242 nr_linfo = prog->aux->nr_linfo; in bpf_adj_linfo_after_remove()
8246 linfo = prog->aux->linfo; in bpf_adj_linfo_after_remove()
8265 if (prog->len != off && l_cnt && in bpf_adj_linfo_after_remove()
8276 prog->aux->nr_linfo -= l_cnt; in bpf_adj_linfo_after_remove()
8277 nr_linfo = prog->aux->nr_linfo; in bpf_adj_linfo_after_remove()
8302 unsigned int orig_prog_len = env->prog->len; in verifier_remove_insns()
8305 if (bpf_prog_is_dev_bound(env->prog->aux)) in verifier_remove_insns()
8308 err = bpf_remove_insns(env->prog, off, cnt); in verifier_remove_insns()
8341 struct bpf_insn *insn = env->prog->insnsi; in sanitize_dead_code()
8342 const int insn_cnt = env->prog->len; in sanitize_dead_code()
8370 struct bpf_insn *insn = env->prog->insnsi; in opt_hard_wire_dead_code_branches()
8371 const int insn_cnt = env->prog->len; in opt_hard_wire_dead_code_branches()
8385 if (bpf_prog_is_dev_bound(env->prog->aux)) in opt_hard_wire_dead_code_branches()
8395 int insn_cnt = env->prog->len; in opt_remove_dead_code()
8410 insn_cnt = env->prog->len; in opt_remove_dead_code()
8419 struct bpf_insn *insn = env->prog->insnsi; in opt_remove_nops()
8420 int insn_cnt = env->prog->len; in opt_remove_nops()
8442 int i, patch_len, delta = 0, len = env->prog->len; in opt_subreg_zext_lo32_rnd_hi32()
8443 struct bpf_insn *insns = env->prog->insnsi; in opt_subreg_zext_lo32_rnd_hi32()
8506 env->prog = new_prog; in opt_subreg_zext_lo32_rnd_hi32()
8524 const int insn_cnt = env->prog->len; in convert_ctx_accesses()
8537 env->prog); in convert_ctx_accesses()
8546 env->prog = new_prog; in convert_ctx_accesses()
8551 if (bpf_prog_is_dev_bound(env->prog->aux)) in convert_ctx_accesses()
8554 insn = env->prog->insnsi + delta; in convert_ctx_accesses()
8595 env->prog = new_prog; in convert_ctx_accesses()
8650 cnt = convert_ctx_access(type, insn, insn_buf, env->prog, in convert_ctx_accesses()
8685 env->prog = new_prog; in convert_ctx_accesses()
8694 struct bpf_prog *prog = env->prog, **func, *tmp; in jit_subprogs() local
8703 for (i = 0, insn = prog->insnsi; i < prog->len; i++, insn++) { in jit_subprogs()
8729 err = bpf_prog_alloc_jited_linfo(prog); in jit_subprogs()
8734 func = kcalloc(env->subprog_cnt, sizeof(prog), GFP_KERNEL); in jit_subprogs()
8751 memcpy(func[i]->insnsi, &prog->insnsi[subprog_start], in jit_subprogs()
8753 func[i]->type = prog->type; in jit_subprogs()
8760 func[i]->aux->btf = prog->aux->btf; in jit_subprogs()
8761 func[i]->aux->func_info = prog->aux->func_info; in jit_subprogs()
8769 func[i]->aux->linfo = prog->aux->linfo; in jit_subprogs()
8770 func[i]->aux->nr_linfo = prog->aux->nr_linfo; in jit_subprogs()
8771 func[i]->aux->jited_linfo = prog->aux->jited_linfo; in jit_subprogs()
8832 for (i = 0, insn = prog->insnsi; i < prog->len; i++, insn++) { in jit_subprogs()
8841 prog->jited = 1; in jit_subprogs()
8842 prog->bpf_func = func[0]->bpf_func; in jit_subprogs()
8843 prog->aux->func = func; in jit_subprogs()
8844 prog->aux->func_cnt = env->subprog_cnt; in jit_subprogs()
8845 bpf_prog_free_unused_jited_linfo(prog); in jit_subprogs()
8854 prog->jit_requested = 0; in jit_subprogs()
8855 for (i = 0, insn = prog->insnsi; i < prog->len; i++, insn++) { in jit_subprogs()
8862 bpf_prog_free_jited_linfo(prog); in jit_subprogs()
8869 struct bpf_prog *prog = env->prog; in fixup_call_args() local
8870 struct bpf_insn *insn = prog->insnsi; in fixup_call_args()
8875 if (env->prog->jit_requested && in fixup_call_args()
8876 !bpf_prog_is_dev_bound(env->prog->aux)) { in fixup_call_args()
8884 for (i = 0; i < prog->len; i++, insn++) { in fixup_call_args()
8905 struct bpf_prog *prog = env->prog; in fixup_bpf_calls() local
8906 struct bpf_insn *insn = prog->insnsi; in fixup_bpf_calls()
8908 const int insn_cnt = prog->len; in fixup_bpf_calls()
8952 env->prog = prog = new_prog; in fixup_bpf_calls()
8971 env->prog = prog = new_prog; in fixup_bpf_calls()
9023 env->prog = prog = new_prog; in fixup_bpf_calls()
9034 prog->dst_needed = 1; in fixup_bpf_calls()
9038 prog->kprobe_override = 1; in fixup_bpf_calls()
9045 prog->cb_access = 1; in fixup_bpf_calls()
9046 env->prog->aux->stack_depth = MAX_BPF_STACK; in fixup_bpf_calls()
9047 env->prog->aux->max_pkt_offset = MAX_PACKET_OFF; in fixup_bpf_calls()
9086 env->prog = prog = new_prog; in fixup_bpf_calls()
9095 if (prog->jit_requested && BITS_PER_LONG == 64 && in fixup_bpf_calls()
9122 env->prog = prog = new_prog; in fixup_bpf_calls()
9173 fn = env->ops->get_func_proto(insn->imm, env->prog); in fixup_bpf_calls()
9243 int bpf_check(struct bpf_prog **prog, union bpf_attr *attr, in bpf_check() argument
9264 len = (*prog)->len; in bpf_check()
9272 env->prog = *prog; in bpf_check()
9273 env->ops = bpf_verifier_ops[env->prog->type]; in bpf_check()
9310 if (bpf_prog_is_dev_bound(env->prog->aux)) { in bpf_check()
9311 ret = bpf_prog_offload_verifier_prep(env->prog); in bpf_check()
9341 if (ret == 0 && bpf_prog_is_dev_bound(env->prog->aux)) in bpf_check()
9374 if (ret == 0 && !bpf_prog_is_dev_bound(env->prog->aux)) { in bpf_check()
9376 env->prog->aux->verifier_zext = bpf_jit_needs_zext() ? !ret in bpf_check()
9395 env->prog->aux->used_maps = kmalloc_array(env->used_map_cnt, in bpf_check()
9399 if (!env->prog->aux->used_maps) { in bpf_check()
9404 memcpy(env->prog->aux->used_maps, env->used_maps, in bpf_check()
9406 env->prog->aux->used_map_cnt = env->used_map_cnt; in bpf_check()
9418 if (!env->prog->aux->used_maps) in bpf_check()
9423 *prog = env->prog; in bpf_check()