Function report |
Source Code:kernel\bpf\verifier.c |
Create Date:2022-07-28 12:57:51 |
Last Modify:2022-05-19 20:02:10 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:heck read/write into a map element with possible variable offset
Proto:static int check_map_access(struct bpf_verifier_env *env, u32 regno, int off, int size, bool zero_size_allowed)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
struct bpf_verifier_env * | env | |
u32 | regno | |
int | off | |
int | size | |
bool | zero_size_allowed |
2237 | vstate = current verifier state |
2238 | state = call stack tracking [curframe] |
2246 | If level & BPF_LOG_LEVEL Then print_verifier_state(env, state) |
2255 | If minimum possible (s64)value < 0 && ( minimum possible (s64)value == S64_MIN || off + minimum possible (s64)value != off + minimum possible (s64)value || minimum possible (s64)value + off < 0 ) Then |
2259 | verbose(env, "R%d min value is negative, either use unsigned index or do a if (index >=0) check.\n", regno) |
2261 | Return -EACCES |
2265 | If err Then |
2276 | verbose(env, "R%d unbounded memory access, make sure to bounds check any array access into a map\n", regno) |
2278 | Return -EACCES |
2287 | lock = >=0 valid offset, <0 error |
2294 | If minimum possible (s64)value + off < lock + sizeof(structbpf_spin_lock) && lock < maximum possible (u64)value + off + size Then |
2300 | Return err |
Name | Describe |
---|---|
check_mem_access | heck 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 && |
check_helper_mem_access | |
adjust_ptr_min_max_vals | Handles arithmetic on a pointer and a scalar: computes new min/max and var_off.* Caller should also handle BPF_MOV case separately.* If we return -EACCES, caller may want to try again treating pointer as a* scalar |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |