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  |