Function report |
Source Code:kernel\bpf\verifier.c |
Create Date:2022-07-28 13:03:24 |
Last Modify:2022-05-19 20:02:10 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:is_state_visited
Proto:static int is_state_visited(struct bpf_verifier_env *env, int insn_idx)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
struct bpf_verifier_env * | env | |
int | insn_idx |
7497 | cur = current verifier state |
7498 | states_cnt = 0 |
7499 | bool add_new_state = st verifier with different pruning frequency ? true : false |
7501 | last_insn_idx = prev_insn_idx |
7502 | If Not prune_point Then Return 0 |
7520 | pprev = explored_state(env, insn_idx) |
7526 | states_cnt++ |
7530 | If states_maybe_looping( & state, cur) && states_equal(env, & state, cur) Then |
7532 | verbose_linfo(env, insn_idx, "; ") |
7534 | Return -EINVAL |
7551 | Go to miss |
7553 | If states_equal(env, & state, cur) Then |
7554 | hit_cnt++ |
7565 | err = A write screens off any subsequent reads; but write marks come from the* straight-line code between a state and its parent |
7573 | err = If err Else d precise scalars in the previous equivalent state and* propagate them into the current state |
7576 | Return 1 |
7578 | miss : |
7585 | If add_new_state Then miss_cnt++ |
7597 | If live & liveness won't be updating this register anymore Then |
7603 | free_verifier_state( & state, false) |
7606 | Else |
7615 | Continue |
7617 | next : |
7622 | If maximum number of verifier states kept in 'branching' instructions < states_cnt Then maximum number of verifier states kept in 'branching' instructions = states_cnt |
7625 | If Not allow_ptr_leaks && states_cnt > BPF_COMPLEXITY_LIMIT_STATES Then Return r any branch, call, exit record the history of jmps in the given state |
7628 | If Not add_new_state Then Return r any branch, call, exit record the history of jmps in the given state |
7640 | new_sl = kzalloc - allocate memory. The memory is set to zero.*@size: how many bytes of memory are required.*@flags: the type of memory to allocate (see kmalloc). |
7646 | umber of instructions analyzed by the verifier = umber of instructions analyzed by the verifier |
7650 | err = copy_verifier_state(new, cur) |
7651 | If err Then |
7662 | clear_jmp_history(cur) |
7663 | next = explored_state(env, insn_idx) |
7664 | explored_state(env, insn_idx) = new_sl |
7679 | When i < BPF_REG_FP cycle parentage chain for liveness checking = regs[i] |
7681 | When i < BPF_REG_FP cycle live = g hasn't been read or written this branch |
7687 | frame = call stack tracking [j] |
7688 | newframe = call stack tracking [j] |
7690 | When i < allocated_stack / size of eBPF register in bytes cycle |
7696 | Return 0 |
Name | Describe |
---|---|
do_check |
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 |