函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\bpf\verifier.c Create Date:2022-07-27 14:10:00
Last Modify:2022-05-19 20:02:10 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:mark_reg_unknown

函数原型:static void mark_reg_unknown(struct bpf_verifier_env *env, struct bpf_reg_state *regs, u32 regno)

返回类型:void

参数:

类型参数名称
struct bpf_verifier_env *env
struct bpf_reg_state *regs
u32regno
1077  如果WARN_ON(regno >= BPF has 10 general purpose 64-bit registers and stack frame. )则
1078  verbose(env, "mark_reg_unknown(regs, %u)\n", regno)
1080 regno小于BPF_REG_FP循环__mark_reg_not_init(env, regs + regno)
1082  返回
1084  Mark a register as having a completely unknown (scalar) value.
调用者
名称描述
check_reg_arg
check_stack_read
check_ptr_to_btf_access
check_mem_accessheck whether memory at (regno + off) is accessible for t = (read | write)* if t==write, value_regno is a register which value is stored into memory* if t==read, value_regno is a register which will receive the value from memory* if t==write &&
__clear_all_pkt_pointersPacket data might have moved, any old PTR_TO_PACKET[_META,_END]* are now invalid, so turn them into unknown SCALAR_VALUE.
release_reg_references
check_helper_call
adjust_scalar_min_max_valsWARNING: This function does calculations on 64-bit values, but the actual* execution may occur on 32-bit values. Therefore, things like bitshifts* need extra checks in the 32-bit case.
adjust_reg_min_max_valsHandles ALU ops other than BPF_END, BPF_NEG and BPF_MOV: computes new min/max* and var_off.
check_alu_opheck validity of 32-bit and 64-bit arithmetic operations
check_ld_absverify safety of LD_ABS|LD_IND instructions:* - they can only appear in the programs where ctx == skb* - since they are wrappers of function calls, they scratch R1-R5 registers,* preserve R6-R9, and store return value into R0* Implicit input:* ctx == skb