函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\btf.c Create Date:2022-07-27 14:37:17
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:btf_datasec_check_meta

函数原型:static s32 btf_datasec_check_meta(struct btf_verifier_env *env, const struct btf_type *t, u32 meta_left)

返回类型:s32

参数:

类型参数名称
struct btf_verifier_env *env
const struct btf_type *t
u32meta_left
2717  last_vsi_end_off等于0, sum等于0
2720  meta_needed等于btf_type_vlen(t)乘vsi的长度
2721  如果meta_left小于meta_needed
2722  btf_verifier_log_basic(env, t, "meta_left:%u meta_needed:%u", meta_left, meta_needed)
2725  返回:负EINVAL
2728  如果非btf_type_vlen(t)则
2729  btf_verifier_log_type(env, t, "vlen == 0")
2730  返回:负EINVAL
2733  如果非size
2734  btf_verifier_log_type(env, t, "size == 0")
2735  返回:负EINVAL
2738  如果btf_type_kflag(t)则
2739  btf_verifier_log_type(env, t, "Invalid btf_info kind_flag")
2740  返回:负EINVAL
2743  如果非name_off或非btf_name_valid_section(btf, name_off)则
2745  btf_verifier_log_type(env, t, "Invalid name")
2746  返回:负EINVAL
2749  btf_verifier_log_type(env, t, NULL)
2753  如果非type或非BTF_TYPE_ID_VALID(type)则
2754  btf_verifier_log_vsi(env, t, vsi, "Invalid type_id")
2756  返回:负EINVAL
2759  如果offset小于last_vsi_end_offoffset大于等于size
2760  btf_verifier_log_vsi(env, t, vsi, "Invalid offset")
2762  返回:负EINVAL
2765  如果非sizesize大于size
2766  btf_verifier_log_vsi(env, t, vsi, "Invalid size")
2768  返回:负EINVAL
2771  last_vsi_end_off等于offsetsize
2772  如果last_vsi_end_off大于size
2773  btf_verifier_log_vsi(env, t, vsi, "Invalid offset+size")
2775  返回:负EINVAL
2778  btf_verifier_log_vsi(env, t, vsi, NULL)
2779  sum加等于size
2782  如果size小于sum
2783  btf_verifier_log_type(env, t, "Invalid btf_info size")
2784  返回:负EINVAL
2787  返回:meta_needed