函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:Adjusts the register min/max values in the case that the dst_reg is the* variable register that we are working on, and src_reg is a constant or we're* simply doing a BPF_K check.* In JEQ/JNE cases we also adjust the var_off values.

函数原型:static void reg_set_min_max(struct bpf_reg_state *true_reg, struct bpf_reg_state *false_reg, u64 val, u8 opcode, bool is_jmp32)

返回类型:void

参数:

类型参数名称
struct bpf_reg_state *true_reg
struct bpf_reg_state *false_reg
u64val
u8opcode
boolis_jmp32
5581  如果__is_pointer_value(TSC's on different sockets may be reset asynchronously.* This may cause the TSC ADJUST value on socket 0 to be NOT 0., false_reg)则返回
5584  val等于如果is_jmp32val否则val
5585  sval等于如果is_jmp32val否则val
5588  :opcode恒等于BPF_JEQ
5589  :opcode恒等于jump !=
5591  reg等于如果opcode恒等于BPF_JEQtrue_reg否则false_reg
5598  如果is_jmp32
5599  old_v等于value
5600  hi_mask等于0xffffffffULL的反
5602  value等于old_v按位与hi_mask按位或val
5603  mask与等于hi_mask
5604  否则
5607  退出
5609  :opcode恒等于BPF_JSET
5610  For scalar types (SCALAR_VALUE), this represents our knowledge of * the actual value. * For pointer types, this represents the variable part of the offset * from the pointed-to object, and is shared with all bpf_reg_states * with the same id as us.等于Bitwise-AND, return @a & @b
5612  如果s_power_of_2() - check if a value is a power of two*@n: the value to check* Determine whether some value is a power of two, where zero is* *not* considered a power of two.* Return: true if @n is a power of 2, otherwise false. For scalar types (SCALAR_VALUE), this represents our knowledge of * the actual value. * For pointer types, this represents the variable part of the offset * from the pointed-to object, and is shared with all bpf_reg_states * with the same id as us.等于Bitwise-OR, return @a | @b
5615  退出
5616  :opcode恒等于BPF_JGE
5617  :opcode恒等于BPF_JGT
5619  false_umax等于如果opcode恒等于BPF_JGTval否则val减1
5620  true_umin等于如果opcode恒等于BPF_JGTval加1否则val
5622  如果is_jmp32
5626  maximum possible (u64)value 等于两数取小( maximum possible (u64)value , false_umax)
5627  minimum possible (u64)value 等于两数取大( minimum possible (u64)value , true_umin)
5628  退出
5630  :opcode恒等于SGE is signed '>=', GE in x86
5631  :opcode恒等于SGT is signed '>', GT in x86
5633  false_smax等于如果opcode恒等于SGT is signed '>', GT in x86 sval否则sval减1
5634  true_smin等于如果opcode恒等于SGT is signed '>', GT in x86 sval加1否则sval
5639  如果is_jmp32且非Return true if VAL is compared with a s64 sign extended from s32, and they* are with the same signedness.退出
5641  maximum possible (s64)value 等于两数取小( maximum possible (s64)value , false_smax)
5642  minimum possible (s64)value 等于两数取大( minimum possible (s64)value , true_smin)
5643  退出
5645  :opcode恒等于LE is unsigned, '<='
5646  :opcode恒等于LT is unsigned, '<'
5648  false_umin等于如果opcode恒等于LT is unsigned, '<' val否则val加1
5649  true_umax等于如果opcode恒等于LT is unsigned, '<' val减1否则val
5651  如果is_jmp32
5655  minimum possible (u64)value 等于两数取大( minimum possible (u64)value , false_umin)
5656  maximum possible (u64)value 等于两数取小( maximum possible (u64)value , true_umax)
5657  退出
5659  :opcode恒等于SLE is signed, '<='
5660  :opcode恒等于SLT is signed, '<'
5662  false_smin等于如果opcode恒等于SLT is signed, '<' sval否则sval加1
5663  true_smax等于如果opcode恒等于SLT is signed, '<' sval减1否则sval
5665  如果is_jmp32且非Return true if VAL is compared with a s64 sign extended from s32, and they* are with the same signedness.退出
5667  minimum possible (s64)value 等于两数取大( minimum possible (s64)value , false_smin)
5668  maximum possible (s64)value 等于两数取小( maximum possible (s64)value , true_smax)
5669  退出
5671  默认
5672  退出
5675  Uses signed min/max values to inform unsigned, and vice-versa
5676  Uses signed min/max values to inform unsigned, and vice-versa
5678  Attempts to improve var_off based on unsigned min/max information
5679  Attempts to improve var_off based on unsigned min/max information
5680  如果is_jmp32
5681  __reg_bound_offset32(false_reg)
5682  __reg_bound_offset32(true_reg)
5688  Attempts to improve min/max values based on var_off information
5689  Attempts to improve min/max values based on var_off information
调用者
名称描述
check_cond_jmp_op