On Tue, Nov 10, 2020 at 6:59 PM <xiakaixu1987@xxxxxxxxx> wrote: > > From: Kaixu Xia <kaixuxia@xxxxxxxxxxx> > > The unsigned variable datasec_id is assigned a return value from the call > to check_pseudo_btf_id(), which may return negative error code. > > Fixes coccicheck warning: > > ./kernel/bpf/verifier.c:9616:5-15: WARNING: Unsigned expression compared with zero: datasec_id > 0 > > Reported-by: Tosk Robot <tencent_os_robot@xxxxxxxxxxx> > Signed-off-by: Kaixu Xia <kaixuxia@xxxxxxxxxxx> > --- > v2: > -split out datasec_id definition into a separate line. > > kernel/bpf/verifier.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c > index 6200519582a6..3fea4fc04e94 100644 > --- a/kernel/bpf/verifier.c > +++ b/kernel/bpf/verifier.c > @@ -9572,7 +9572,8 @@ static int check_pseudo_btf_id(struct bpf_verifier_env *env, > struct bpf_insn *insn, > struct bpf_insn_aux_data *aux) > { > - u32 datasec_id, type, id = insn->imm; > + s32 datasec_id; > + u32 type, id = insn->imm; > const struct btf_var_secinfo *vsi; > const struct btf_type *datasec; > const struct btf_type *t; > -- > 2.20.0 > It would look a bit cleaner if you did it this way: diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 10da26e55130..f674b1403637 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -9585,12 +9585,13 @@ static int check_pseudo_btf_id(struct bpf_verifier_env *env, struct bpf_insn *insn, struct bpf_insn_aux_data *aux) { - u32 datasec_id, type, id = insn->imm; const struct btf_var_secinfo *vsi; const struct btf_type *datasec; const struct btf_type *t; const char *sym_name; bool percpu = false; + u32 type, id = insn->imm; + s32 datasec_id; u64 addr; int i;