函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:btf_int_check_member

函数原型:static int btf_int_check_member(struct btf_verifier_env *env, const struct btf_type *struct_type, const struct btf_member *member, const struct btf_type *member_type)

返回类型:int

参数:

类型参数名称
struct btf_verifier_env *env
const struct btf_type *struct_type
const struct btf_member *member
const struct btf_type *member_type
1232  int_data等于btf_type_int(member_type)
1233  struct_bits_off等于If the type info kind_flag is set, the btf_member offset* contains both member bitfield size and bit offset. The* bitfield size is set for bitfield members. If the type* info kind_flag is not set, the offset contains only bit* offset.
1234  struct_size等于size
1238  如果U32_MAXstruct_bits_off小于BTF_INT_OFFSET(int_data)则
1239  btf_verifier_log_member(env, struct_type, member, "bits_offset exceeds U32_MAX")
1241  返回:负EINVAL
1244  struct_bits_off加等于BTF_INT_OFFSET(int_data)
1245  bytes_offset等于BITS_ROUNDDOWN_BYTES(struct_bits_off)
1246  nr_copy_bits等于BTF_INT_BITS(int_data)加BITS_PER_BYTE_MASKED(struct_bits_off)
1249  如果nr_copy_bits大于BTF verification:* To verify BTF data, two passes are needed.* Pass #1* ~~~~~~~* The first pass is to collect all btf_type objects to* an array: "btf->types".* Depending on the C type that a btf_type is describing,
1250  btf_verifier_log_member(env, struct_type, member, "nr_copy_bits exceeds 128")
1252  返回:负EINVAL
1255  如果struct_size小于bytes_offsetstruct_sizebytes_offset小于BITS_ROUNDUP_BYTES(nr_copy_bits)则
1257  btf_verifier_log_member(env, struct_type, member, "Member exceeds struct_size")
1259  返回:负EINVAL
1262  返回:0