函数逻辑报告 |
Source Code:kernel\bpf\verifier.c |
Create Date:2022-07-27 14:13:30 |
| Last Modify:2022-05-19 20:02:10 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:check_func_call
函数原型:static int check_func_call(struct bpf_verifier_env *env, struct bpf_insn *insn, int *insn_idx)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct bpf_verifier_env * | env | |
| struct bpf_insn * | insn | |
| int * | insn_idx |
| 3951 | state等于current verifier state |
| 3955 | 如果curframe加1大于等于MAX_CALL_FRAMES则 |
| 3962 | subprog等于find_subprog(env, target_insn + 1) |
| 3963 | 如果subprog小于0则 |
| 3964 | verbose(env, "verifier bug. No program starts at insn %d\n", target_insn + 1) |
| 3966 | 返回:负EFAULT |
| 3969 | caller等于 call stack tracking [curframe] |
| 3970 | 如果 call stack tracking [curframe + 1]则 |
| 3979 | call stack tracking [curframe + 1]等于callee |
| 3992 | err等于transfer_reference_state(callee, caller) |
| 4003 | 以i小于CALLER_SAVED_REGS循环 |
| 4004 | mark_reg_not_init(env, regs, caller_saved[i]) |
| 4005 | check_reg_arg(env, caller_saved[i], DST_OP_NO_MARK) |
| 4009 | curframe自加 |
| 4011 | 如果btf_check_func_arg_match(env, subprog)则返回:负EINVAL |
| 4015 | insn_idx等于target_insn |
| 4017 | 如果level按位与BPF_LOG_LEVEL则 |
| 4019 | print_verifier_state(env, caller) |
| 4021 | print_verifier_state(env, callee) |
| 4023 | 返回:0 |
| 名称 | 描述 |
|---|---|
| do_check |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |