Lines Matching refs:func_id

253 	int func_id;  member
489 static bool is_release_function(enum bpf_func_id func_id) in is_release_function() argument
491 return func_id == BPF_FUNC_sk_release || in is_release_function()
492 func_id == BPF_FUNC_ringbuf_submit || in is_release_function()
493 func_id == BPF_FUNC_ringbuf_discard; in is_release_function()
496 static bool may_be_acquire_function(enum bpf_func_id func_id) in may_be_acquire_function() argument
498 return func_id == BPF_FUNC_sk_lookup_tcp || in may_be_acquire_function()
499 func_id == BPF_FUNC_sk_lookup_udp || in may_be_acquire_function()
500 func_id == BPF_FUNC_skc_lookup_tcp || in may_be_acquire_function()
501 func_id == BPF_FUNC_map_lookup_elem || in may_be_acquire_function()
502 func_id == BPF_FUNC_ringbuf_reserve; in may_be_acquire_function()
505 static bool is_acquire_function(enum bpf_func_id func_id, in is_acquire_function() argument
510 if (func_id == BPF_FUNC_sk_lookup_tcp || in is_acquire_function()
511 func_id == BPF_FUNC_sk_lookup_udp || in is_acquire_function()
512 func_id == BPF_FUNC_skc_lookup_tcp || in is_acquire_function()
513 func_id == BPF_FUNC_ringbuf_reserve) in is_acquire_function()
516 if (func_id == BPF_FUNC_map_lookup_elem && in is_acquire_function()
524 static bool is_ptr_cast_function(enum bpf_func_id func_id) in is_ptr_cast_function() argument
526 return func_id == BPF_FUNC_tcp_sock || in is_ptr_cast_function()
527 func_id == BPF_FUNC_sk_fullsock || in is_ptr_cast_function()
528 func_id == BPF_FUNC_skc_to_tcp_sock || in is_ptr_cast_function()
529 func_id == BPF_FUNC_skc_to_tcp6_sock || in is_ptr_cast_function()
530 func_id == BPF_FUNC_skc_to_udp6_sock || in is_ptr_cast_function()
531 func_id == BPF_FUNC_skc_to_tcp_timewait_sock || in is_ptr_cast_function()
532 func_id == BPF_FUNC_skc_to_tcp_request_sock; in is_ptr_cast_function()
1649 u32 func_id; member
1676 return d0->func_id - d1->func_id ?: d0->offset - d1->offset; in kfunc_desc_cmp_by_id_off()
1688 find_kfunc_desc(const struct bpf_prog *prog, u32 func_id, u16 offset) in find_kfunc_desc() argument
1691 .func_id = func_id, in find_kfunc_desc()
1774 u32 func_id, s16 offset, in find_kfunc_desc_btf() argument
1791 static int add_kfunc_call(struct bpf_verifier_env *env, u32 func_id, s16 offset) in add_kfunc_call() argument
1839 if (!func_id && !offset) in add_kfunc_call()
1849 desc_btf = find_kfunc_desc_btf(env, func_id, offset, NULL); in add_kfunc_call()
1855 if (find_kfunc_desc(env->prog, func_id, offset)) in add_kfunc_call()
1863 func = btf_type_by_id(desc_btf, func_id); in add_kfunc_call()
1866 func_id); in add_kfunc_call()
1872 func_id); in add_kfunc_call()
1885 desc->func_id = func_id; in add_kfunc_call()
5019 if (meta->func_id == BPF_FUNC_map_peek_elem) in resolve_map_arg_type()
5325 if (meta->func_id == BPF_FUNC_spin_lock) { in check_func_arg()
5328 } else if (meta->func_id == BPF_FUNC_spin_unlock) { in check_func_arg()
5450 static bool may_update_sockmap(struct bpf_verifier_env *env, int func_id) in may_update_sockmap() argument
5455 if (func_id != BPF_FUNC_map_update_elem) in may_update_sockmap()
5488 struct bpf_map *map, int func_id) in check_map_func_compatibility() argument
5496 if (func_id != BPF_FUNC_tail_call) in check_map_func_compatibility()
5500 if (func_id != BPF_FUNC_perf_event_read && in check_map_func_compatibility()
5501 func_id != BPF_FUNC_perf_event_output && in check_map_func_compatibility()
5502 func_id != BPF_FUNC_skb_output && in check_map_func_compatibility()
5503 func_id != BPF_FUNC_perf_event_read_value && in check_map_func_compatibility()
5504 func_id != BPF_FUNC_xdp_output) in check_map_func_compatibility()
5508 if (func_id != BPF_FUNC_ringbuf_output && in check_map_func_compatibility()
5509 func_id != BPF_FUNC_ringbuf_reserve && in check_map_func_compatibility()
5510 func_id != BPF_FUNC_ringbuf_query) in check_map_func_compatibility()
5514 if (func_id != BPF_FUNC_get_stackid) in check_map_func_compatibility()
5518 if (func_id != BPF_FUNC_skb_under_cgroup && in check_map_func_compatibility()
5519 func_id != BPF_FUNC_current_task_under_cgroup) in check_map_func_compatibility()
5524 if (func_id != BPF_FUNC_get_local_storage) in check_map_func_compatibility()
5529 if (func_id != BPF_FUNC_redirect_map && in check_map_func_compatibility()
5530 func_id != BPF_FUNC_map_lookup_elem) in check_map_func_compatibility()
5537 if (func_id != BPF_FUNC_redirect_map) in check_map_func_compatibility()
5541 if (func_id != BPF_FUNC_redirect_map && in check_map_func_compatibility()
5542 func_id != BPF_FUNC_map_lookup_elem) in check_map_func_compatibility()
5547 if (func_id != BPF_FUNC_map_lookup_elem) in check_map_func_compatibility()
5551 if (func_id != BPF_FUNC_sk_redirect_map && in check_map_func_compatibility()
5552 func_id != BPF_FUNC_sock_map_update && in check_map_func_compatibility()
5553 func_id != BPF_FUNC_map_delete_elem && in check_map_func_compatibility()
5554 func_id != BPF_FUNC_msg_redirect_map && in check_map_func_compatibility()
5555 func_id != BPF_FUNC_sk_select_reuseport && in check_map_func_compatibility()
5556 func_id != BPF_FUNC_map_lookup_elem && in check_map_func_compatibility()
5557 !may_update_sockmap(env, func_id)) in check_map_func_compatibility()
5561 if (func_id != BPF_FUNC_sk_redirect_hash && in check_map_func_compatibility()
5562 func_id != BPF_FUNC_sock_hash_update && in check_map_func_compatibility()
5563 func_id != BPF_FUNC_map_delete_elem && in check_map_func_compatibility()
5564 func_id != BPF_FUNC_msg_redirect_hash && in check_map_func_compatibility()
5565 func_id != BPF_FUNC_sk_select_reuseport && in check_map_func_compatibility()
5566 func_id != BPF_FUNC_map_lookup_elem && in check_map_func_compatibility()
5567 !may_update_sockmap(env, func_id)) in check_map_func_compatibility()
5571 if (func_id != BPF_FUNC_sk_select_reuseport) in check_map_func_compatibility()
5576 if (func_id != BPF_FUNC_map_peek_elem && in check_map_func_compatibility()
5577 func_id != BPF_FUNC_map_pop_elem && in check_map_func_compatibility()
5578 func_id != BPF_FUNC_map_push_elem) in check_map_func_compatibility()
5582 if (func_id != BPF_FUNC_sk_storage_get && in check_map_func_compatibility()
5583 func_id != BPF_FUNC_sk_storage_delete) in check_map_func_compatibility()
5587 if (func_id != BPF_FUNC_inode_storage_get && in check_map_func_compatibility()
5588 func_id != BPF_FUNC_inode_storage_delete) in check_map_func_compatibility()
5592 if (func_id != BPF_FUNC_task_storage_get && in check_map_func_compatibility()
5593 func_id != BPF_FUNC_task_storage_delete) in check_map_func_compatibility()
5597 if (func_id != BPF_FUNC_map_peek_elem && in check_map_func_compatibility()
5598 func_id != BPF_FUNC_map_push_elem) in check_map_func_compatibility()
5606 switch (func_id) { in check_map_func_compatibility()
5702 map->map_type, func_id_name(func_id), func_id); in check_map_func_compatibility()
5755 static bool check_refcount_ok(const struct bpf_func_proto *fn, int func_id) in check_refcount_ok() argument
5773 if (may_be_acquire_function(func_id) && count) in check_refcount_ok()
5797 static int check_func_proto(const struct bpf_func_proto *fn, int func_id) in check_func_proto() argument
5802 check_refcount_ok(fn, func_id) ? 0 : -EINVAL; in check_func_proto()
6206 int func_id, in do_refine_retval_range() argument
6212 (func_id != BPF_FUNC_get_stack && in do_refine_retval_range()
6213 func_id != BPF_FUNC_get_task_stack && in do_refine_retval_range()
6214 func_id != BPF_FUNC_probe_read_str && in do_refine_retval_range()
6215 func_id != BPF_FUNC_probe_read_kernel_str && in do_refine_retval_range()
6216 func_id != BPF_FUNC_probe_read_user_str)) in do_refine_retval_range()
6230 int func_id, int insn_idx) in record_func_map() argument
6235 if (func_id != BPF_FUNC_tail_call && in record_func_map()
6236 func_id != BPF_FUNC_map_lookup_elem && in record_func_map()
6237 func_id != BPF_FUNC_map_update_elem && in record_func_map()
6238 func_id != BPF_FUNC_map_delete_elem && in record_func_map()
6239 func_id != BPF_FUNC_map_push_elem && in record_func_map()
6240 func_id != BPF_FUNC_map_pop_elem && in record_func_map()
6241 func_id != BPF_FUNC_map_peek_elem && in record_func_map()
6242 func_id != BPF_FUNC_for_each_map_elem && in record_func_map()
6243 func_id != BPF_FUNC_redirect_map) in record_func_map()
6256 (func_id == BPF_FUNC_map_delete_elem || in record_func_map()
6257 func_id == BPF_FUNC_map_update_elem || in record_func_map()
6258 func_id == BPF_FUNC_map_push_elem || in record_func_map()
6259 func_id == BPF_FUNC_map_pop_elem)) { in record_func_map()
6275 int func_id, int insn_idx) in record_func_key() argument
6284 if (func_id != BPF_FUNC_tail_call) in record_func_key()
6365 int func_id = BPF_FUNC_get_func_ip; in check_get_func_ip() local
6371 func_id_name(func_id), func_id); in check_get_func_ip()
6380 func_id_name(func_id), func_id, type); in check_get_func_ip()
6392 int i, err, func_id; in check_helper_call() local
6395 func_id = insn->imm; in check_helper_call()
6396 if (func_id < 0 || func_id >= __BPF_FUNC_MAX_ID) { in check_helper_call()
6397 verbose(env, "invalid func %s#%d\n", func_id_name(func_id), in check_helper_call()
6398 func_id); in check_helper_call()
6403 fn = env->ops->get_func_proto(func_id, env->prog); in check_helper_call()
6405 verbose(env, "unknown func %s#%d\n", func_id_name(func_id), in check_helper_call()
6406 func_id); in check_helper_call()
6425 func_id_name(func_id), func_id); in check_helper_call()
6432 err = check_func_proto(fn, func_id); in check_helper_call()
6435 func_id_name(func_id), func_id); in check_helper_call()
6439 meta.func_id = func_id; in check_helper_call()
6447 err = record_func_map(env, &meta, func_id, insn_idx); in check_helper_call()
6451 err = record_func_key(env, &meta, func_id, insn_idx); in check_helper_call()
6465 if (func_id == BPF_FUNC_tail_call) { in check_helper_call()
6471 } else if (is_release_function(func_id)) { in check_helper_call()
6475 func_id_name(func_id), func_id); in check_helper_call()
6485 if (func_id == BPF_FUNC_get_local_storage && in check_helper_call()
6491 if (func_id == BPF_FUNC_for_each_map_elem) { in check_helper_call()
6498 if (func_id == BPF_FUNC_timer_set_callback) { in check_helper_call()
6505 if (func_id == BPF_FUNC_snprintf) { in check_helper_call()
6602 fn->ret_type, func_id_name(func_id), func_id); in check_helper_call()
6612 fn->ret_type, func_id_name(func_id), func_id); in check_helper_call()
6619 if (is_ptr_cast_function(func_id)) { in check_helper_call()
6622 } else if (is_acquire_function(func_id, meta.map_ptr)) { in check_helper_call()
6633 do_refine_retval_range(regs, fn->ret_type, func_id, &meta); in check_helper_call()
6635 err = check_map_func_compatibility(env, meta.map_ptr, func_id); in check_helper_call()
6639 if ((func_id == BPF_FUNC_get_stack || in check_helper_call()
6640 func_id == BPF_FUNC_get_task_stack) && in check_helper_call()
6652 verbose(env, err_str, func_id_name(func_id), func_id); in check_helper_call()
6659 if (func_id == BPF_FUNC_get_stackid || func_id == BPF_FUNC_get_stack) in check_helper_call()
6662 if (func_id == BPF_FUNC_get_func_ip) { in check_helper_call()
6702 u32 i, nargs, func_id, ptr_type_id; in check_kfunc_call() local
6716 func_id = insn->imm; in check_kfunc_call()
6717 func = btf_type_by_id(desc_btf, func_id); in check_kfunc_call()
6722 !env->ops->check_kfunc_call(func_id, btf_mod)) { in check_kfunc_call()
6729 err = btf_check_kfunc_arg_match(env, desc_btf, func_id, regs); in check_kfunc_call()