Lines Matching refs:func_id
259 int func_id; member
495 static bool is_release_function(enum bpf_func_id func_id) in is_release_function() argument
497 return func_id == BPF_FUNC_sk_release || in is_release_function()
498 func_id == BPF_FUNC_ringbuf_submit || in is_release_function()
499 func_id == BPF_FUNC_ringbuf_discard; in is_release_function()
502 static bool may_be_acquire_function(enum bpf_func_id func_id) in may_be_acquire_function() argument
504 return func_id == BPF_FUNC_sk_lookup_tcp || in may_be_acquire_function()
505 func_id == BPF_FUNC_sk_lookup_udp || in may_be_acquire_function()
506 func_id == BPF_FUNC_skc_lookup_tcp || in may_be_acquire_function()
507 func_id == BPF_FUNC_map_lookup_elem || in may_be_acquire_function()
508 func_id == BPF_FUNC_ringbuf_reserve; in may_be_acquire_function()
511 static bool is_acquire_function(enum bpf_func_id func_id, in is_acquire_function() argument
516 if (func_id == BPF_FUNC_sk_lookup_tcp || in is_acquire_function()
517 func_id == BPF_FUNC_sk_lookup_udp || in is_acquire_function()
518 func_id == BPF_FUNC_skc_lookup_tcp || in is_acquire_function()
519 func_id == BPF_FUNC_ringbuf_reserve) in is_acquire_function()
522 if (func_id == BPF_FUNC_map_lookup_elem && in is_acquire_function()
530 static bool is_ptr_cast_function(enum bpf_func_id func_id) in is_ptr_cast_function() argument
532 return func_id == BPF_FUNC_tcp_sock || in is_ptr_cast_function()
533 func_id == BPF_FUNC_sk_fullsock || in is_ptr_cast_function()
534 func_id == BPF_FUNC_skc_to_tcp_sock || in is_ptr_cast_function()
535 func_id == BPF_FUNC_skc_to_tcp6_sock || in is_ptr_cast_function()
536 func_id == BPF_FUNC_skc_to_udp6_sock || in is_ptr_cast_function()
537 func_id == BPF_FUNC_skc_to_tcp_timewait_sock || in is_ptr_cast_function()
538 func_id == BPF_FUNC_skc_to_tcp_request_sock; in is_ptr_cast_function()
1631 u32 func_id; member
1647 return d0->func_id - d1->func_id; in kfunc_desc_cmp_by_id()
1651 find_kfunc_desc(const struct bpf_prog *prog, u32 func_id) in find_kfunc_desc() argument
1654 .func_id = func_id, in find_kfunc_desc()
1663 static int add_kfunc_call(struct bpf_verifier_env *env, u32 func_id) in add_kfunc_call() argument
1702 if (find_kfunc_desc(env->prog, func_id)) in add_kfunc_call()
1710 func = btf_type_by_id(btf_vmlinux, func_id); in add_kfunc_call()
1713 func_id); in add_kfunc_call()
1719 func_id); in add_kfunc_call()
1732 desc->func_id = func_id; in add_kfunc_call()
5120 if (meta->func_id == BPF_FUNC_spin_lock) { in check_func_arg()
5123 } else if (meta->func_id == BPF_FUNC_spin_unlock) { in check_func_arg()
5245 static bool may_update_sockmap(struct bpf_verifier_env *env, int func_id) in may_update_sockmap() argument
5250 if (func_id != BPF_FUNC_map_update_elem) in may_update_sockmap()
5283 struct bpf_map *map, int func_id) in check_map_func_compatibility() argument
5291 if (func_id != BPF_FUNC_tail_call) in check_map_func_compatibility()
5295 if (func_id != BPF_FUNC_perf_event_read && in check_map_func_compatibility()
5296 func_id != BPF_FUNC_perf_event_output && in check_map_func_compatibility()
5297 func_id != BPF_FUNC_skb_output && in check_map_func_compatibility()
5298 func_id != BPF_FUNC_perf_event_read_value && in check_map_func_compatibility()
5299 func_id != BPF_FUNC_xdp_output) in check_map_func_compatibility()
5303 if (func_id != BPF_FUNC_ringbuf_output && in check_map_func_compatibility()
5304 func_id != BPF_FUNC_ringbuf_reserve && in check_map_func_compatibility()
5305 func_id != BPF_FUNC_ringbuf_query) in check_map_func_compatibility()
5309 if (func_id != BPF_FUNC_get_stackid) in check_map_func_compatibility()
5313 if (func_id != BPF_FUNC_skb_under_cgroup && in check_map_func_compatibility()
5314 func_id != BPF_FUNC_current_task_under_cgroup) in check_map_func_compatibility()
5319 if (func_id != BPF_FUNC_get_local_storage) in check_map_func_compatibility()
5324 if (func_id != BPF_FUNC_redirect_map && in check_map_func_compatibility()
5325 func_id != BPF_FUNC_map_lookup_elem) in check_map_func_compatibility()
5332 if (func_id != BPF_FUNC_redirect_map) in check_map_func_compatibility()
5336 if (func_id != BPF_FUNC_redirect_map && in check_map_func_compatibility()
5337 func_id != BPF_FUNC_map_lookup_elem) in check_map_func_compatibility()
5342 if (func_id != BPF_FUNC_map_lookup_elem) in check_map_func_compatibility()
5346 if (func_id != BPF_FUNC_sk_redirect_map && in check_map_func_compatibility()
5347 func_id != BPF_FUNC_sock_map_update && in check_map_func_compatibility()
5348 func_id != BPF_FUNC_map_delete_elem && in check_map_func_compatibility()
5349 func_id != BPF_FUNC_msg_redirect_map && in check_map_func_compatibility()
5350 func_id != BPF_FUNC_sk_select_reuseport && in check_map_func_compatibility()
5351 func_id != BPF_FUNC_map_lookup_elem && in check_map_func_compatibility()
5352 !may_update_sockmap(env, func_id)) in check_map_func_compatibility()
5356 if (func_id != BPF_FUNC_sk_redirect_hash && in check_map_func_compatibility()
5357 func_id != BPF_FUNC_sock_hash_update && in check_map_func_compatibility()
5358 func_id != BPF_FUNC_map_delete_elem && in check_map_func_compatibility()
5359 func_id != BPF_FUNC_msg_redirect_hash && in check_map_func_compatibility()
5360 func_id != BPF_FUNC_sk_select_reuseport && in check_map_func_compatibility()
5361 func_id != BPF_FUNC_map_lookup_elem && in check_map_func_compatibility()
5362 !may_update_sockmap(env, func_id)) in check_map_func_compatibility()
5366 if (func_id != BPF_FUNC_sk_select_reuseport) in check_map_func_compatibility()
5371 if (func_id != BPF_FUNC_map_peek_elem && in check_map_func_compatibility()
5372 func_id != BPF_FUNC_map_pop_elem && in check_map_func_compatibility()
5373 func_id != BPF_FUNC_map_push_elem) in check_map_func_compatibility()
5377 if (func_id != BPF_FUNC_sk_storage_get && in check_map_func_compatibility()
5378 func_id != BPF_FUNC_sk_storage_delete) in check_map_func_compatibility()
5382 if (func_id != BPF_FUNC_inode_storage_get && in check_map_func_compatibility()
5383 func_id != BPF_FUNC_inode_storage_delete) in check_map_func_compatibility()
5387 if (func_id != BPF_FUNC_task_storage_get && in check_map_func_compatibility()
5388 func_id != BPF_FUNC_task_storage_delete) in check_map_func_compatibility()
5396 switch (func_id) { in check_map_func_compatibility()
5487 map->map_type, func_id_name(func_id), func_id); in check_map_func_compatibility()
5540 static bool check_refcount_ok(const struct bpf_func_proto *fn, int func_id) in check_refcount_ok() argument
5558 if (may_be_acquire_function(func_id) && count) in check_refcount_ok()
5582 static int check_func_proto(const struct bpf_func_proto *fn, int func_id) in check_func_proto() argument
5587 check_refcount_ok(fn, func_id) ? 0 : -EINVAL; in check_func_proto()
5991 int func_id, in do_refine_retval_range() argument
5997 (func_id != BPF_FUNC_get_stack && in do_refine_retval_range()
5998 func_id != BPF_FUNC_get_task_stack && in do_refine_retval_range()
5999 func_id != BPF_FUNC_probe_read_str && in do_refine_retval_range()
6000 func_id != BPF_FUNC_probe_read_kernel_str && in do_refine_retval_range()
6001 func_id != BPF_FUNC_probe_read_user_str)) in do_refine_retval_range()
6015 int func_id, int insn_idx) in record_func_map() argument
6020 if (func_id != BPF_FUNC_tail_call && in record_func_map()
6021 func_id != BPF_FUNC_map_lookup_elem && in record_func_map()
6022 func_id != BPF_FUNC_map_update_elem && in record_func_map()
6023 func_id != BPF_FUNC_map_delete_elem && in record_func_map()
6024 func_id != BPF_FUNC_map_push_elem && in record_func_map()
6025 func_id != BPF_FUNC_map_pop_elem && in record_func_map()
6026 func_id != BPF_FUNC_map_peek_elem && in record_func_map()
6027 func_id != BPF_FUNC_for_each_map_elem && in record_func_map()
6028 func_id != BPF_FUNC_redirect_map) in record_func_map()
6041 (func_id == BPF_FUNC_map_delete_elem || in record_func_map()
6042 func_id == BPF_FUNC_map_update_elem || in record_func_map()
6043 func_id == BPF_FUNC_map_push_elem || in record_func_map()
6044 func_id == BPF_FUNC_map_pop_elem)) { in record_func_map()
6060 int func_id, int insn_idx) in record_func_key() argument
6069 if (func_id != BPF_FUNC_tail_call) in record_func_key()
6150 int func_id = BPF_FUNC_get_func_ip; in check_get_func_ip() local
6156 func_id_name(func_id), func_id); in check_get_func_ip()
6165 func_id_name(func_id), func_id, type); in check_get_func_ip()
6177 int i, err, func_id; in check_helper_call() local
6180 func_id = insn->imm; in check_helper_call()
6181 if (func_id < 0 || func_id >= __BPF_FUNC_MAX_ID) { in check_helper_call()
6182 verbose(env, "invalid func %s#%d\n", func_id_name(func_id), in check_helper_call()
6183 func_id); in check_helper_call()
6188 fn = env->ops->get_func_proto(func_id, env->prog); in check_helper_call()
6190 verbose(env, "unknown func %s#%d\n", func_id_name(func_id), in check_helper_call()
6191 func_id); in check_helper_call()
6210 func_id_name(func_id), func_id); in check_helper_call()
6217 err = check_func_proto(fn, func_id); in check_helper_call()
6220 func_id_name(func_id), func_id); in check_helper_call()
6224 meta.func_id = func_id; in check_helper_call()
6232 err = record_func_map(env, &meta, func_id, insn_idx); in check_helper_call()
6236 err = record_func_key(env, &meta, func_id, insn_idx); in check_helper_call()
6250 if (func_id == BPF_FUNC_tail_call) { in check_helper_call()
6256 } else if (is_release_function(func_id)) { in check_helper_call()
6260 func_id_name(func_id), func_id); in check_helper_call()
6270 if (func_id == BPF_FUNC_get_local_storage && in check_helper_call()
6276 if (func_id == BPF_FUNC_for_each_map_elem) { in check_helper_call()
6283 if (func_id == BPF_FUNC_timer_set_callback) { in check_helper_call()
6290 if (func_id == BPF_FUNC_snprintf) { in check_helper_call()
6387 fn->ret_type, func_id_name(func_id), func_id); in check_helper_call()
6397 fn->ret_type, func_id_name(func_id), func_id); in check_helper_call()
6404 if (is_ptr_cast_function(func_id)) { in check_helper_call()
6407 } else if (is_acquire_function(func_id, meta.map_ptr)) { in check_helper_call()
6418 do_refine_retval_range(regs, fn->ret_type, func_id, &meta); in check_helper_call()
6420 err = check_map_func_compatibility(env, meta.map_ptr, func_id); in check_helper_call()
6424 if ((func_id == BPF_FUNC_get_stack || in check_helper_call()
6425 func_id == BPF_FUNC_get_task_stack) && in check_helper_call()
6437 verbose(env, err_str, func_id_name(func_id), func_id); in check_helper_call()
6444 if (func_id == BPF_FUNC_get_stackid || func_id == BPF_FUNC_get_stack) in check_helper_call()
6447 if (func_id == BPF_FUNC_get_func_ip) { in check_helper_call()
6487 u32 i, nargs, func_id, ptr_type_id; in check_kfunc_call() local
6491 func_id = insn->imm; in check_kfunc_call()
6492 func = btf_type_by_id(btf_vmlinux, func_id); in check_kfunc_call()
6497 !env->ops->check_kfunc_call(func_id)) { in check_kfunc_call()
6504 err = btf_check_kfunc_arg_match(env, btf_vmlinux, func_id, regs); in check_kfunc_call()