Hi Lehui, On Tue, May 06, 2025 at 10:03:59PM +0800, Pu Lehui wrote: > On 2025/4/30 8:50, Peilin Ye wrote: > > --- a/kernel/bpf/verifier.c > > +++ b/kernel/bpf/verifier.c > > @@ -3649,13 +3649,16 @@ static int insn_def_regno(const struct bpf_insn *insn) > > case BPF_ST: > > return -1; > > case BPF_STX: > > - if ((BPF_MODE(insn->code) == BPF_ATOMIC || > > - BPF_MODE(insn->code) == BPF_PROBE_ATOMIC) && > > - (insn->imm & BPF_FETCH)) { > > + if (BPF_MODE(insn->code) == BPF_ATOMIC || > > + BPF_MODE(insn->code) == BPF_PROBE_ATOMIC) { > > if (insn->imm == BPF_CMPXCHG) > > return BPF_REG_0; > > - else > > + else if (insn->imm == BPF_LOAD_ACQ) > > + return insn->dst_reg; > > + else if (insn->imm & BPF_FETCH) > > return insn->src_reg; > > + else > > + return -1; > > } else { > > return -1; > > } > > How about simplify like this: > ``` > static int insn_def_regno(const struct bpf_insn *insn) > { > switch (BPF_CLASS(insn->code)) { > case BPF_JMP: > case BPF_JMP32: > case BPF_ST: > return -1; > case BPF_STX: > if (BPF_MODE(insn->code) == BPF_ATOMIC || > BPF_MODE(insn->code) == BPF_PROBE_ATOMIC) { > if (insn->imm == BPF_CMPXCHG) > return BPF_REG_0; > else if (insn->imm == BPF_LOAD_ACQ) > return insn->dst_reg; > else if (insn->imm & BPF_FETCH) > return insn->src_reg; > } > return -1; > default: > return insn->dst_reg; > } > } > ``` I see, I'll change it in v2. Thanks for the suggestion! Peilin Ye