bpf: move REG_LIVE_DONE check to clean_live_states()
The next patch would add some relatively heavy-weight operation to clean_live_states(), this operation can be skipped if REG_LIVE_DONE is set. Move the check from clean_verifier_state() to clean_verifier_state() as a small refactoring commit. Signed-off-by: Eduard Zingerman <eddyz87@gmail.com> Link: https://lore.kernel.org/r/20250611200836.4135542-7-eddyz87@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>pull/1309/head
parent
dfb2d4c64b
commit
b5c677d8d9
|
|
@ -18305,10 +18305,6 @@ static void clean_verifier_state(struct bpf_verifier_env *env,
|
|||
{
|
||||
int i;
|
||||
|
||||
if (st->frame[0]->regs[0].live & REG_LIVE_DONE)
|
||||
/* all regs in this state in all frames were already marked */
|
||||
return;
|
||||
|
||||
for (i = 0; i <= st->curframe; i++)
|
||||
clean_func_state(env, st->frame[i]);
|
||||
}
|
||||
|
|
@ -18363,6 +18359,9 @@ static void clean_live_states(struct bpf_verifier_env *env, int insn,
|
|||
if (sl->state.insn_idx != insn ||
|
||||
!same_callsites(&sl->state, cur))
|
||||
continue;
|
||||
if (sl->state.frame[0]->regs[0].live & REG_LIVE_DONE)
|
||||
/* all regs in this state in all frames were already marked */
|
||||
continue;
|
||||
clean_verifier_state(env, &sl->state);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue