函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |