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 |