函数逻辑报告 |
Source Code:kernel\bpf\verifier.c |
Create Date:2022-07-27 14:10:14 |
Last Modify:2022-05-19 20:02:10 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:check_subprogs
函数原型:static int check_subprogs(struct bpf_verifier_env *env)
返回类型:int
参数:
类型 | 参数 | 名称 |
---|---|---|
struct bpf_verifier_env * | env |
1190 | cur_subprog等于0 |
1191 | subprog等于subprog_info |
1193 | insn_cnt等于 Number of filter blocks |
1196 | ret等于add_subprog(env, 0) |
1202 | 如果 opcode 不等于BPF_JMP按位或unction call 的值则继续下一循环 |
1204 | 如果 source register 不等于when bpf_call->src_reg == BPF_PSEUDO_CALL, bpf_call->imm == pc-relative* offset to another bpf function则继续下一循环 |
1206 | 如果非allow_ptr_leaks则 |
1208 | 返回:负EPERM |
1210 | ret等于add_subprog(env, i + signed immediate constant + 1) |
1220 | 如果level按位与BPF_LOG_LEVEL2则以i小于subprog_cnt循环 |
1222 | verbose(env, "func#%d @%d\n", i, insn idx of function entry point ) |
1230 | 如果Instruction classes (code)不等于BPF_JMP且Instruction classes (code)不等于jmp mode in word width 则转到:next |
1232 | 如果alu/jmp fields (code)恒等于unction return 或alu/jmp fields (code)恒等于unction call 则转到:next |
1234 | off等于i加 signed offset 加1 |
1235 | 如果off小于subprog_start或off大于等于subprog_end则 |
1239 | next : |
1240 | 如果i恒等于subprog_end减1则 |
1250 | subprog_start等于subprog_end |
1251 | cur_subprog自加 |
1256 | 返回:0 |
名称 | 描述 |
---|---|
bpf_check |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |