* [bug report] bpf: Support attaching tracing BPF program to other BPF programs
@ 2020-03-11 12:10 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2020-03-11 12:10 UTC (permalink / raw)
To: ast; +Cc: bpf
Hello Alexei Starovoitov,
This is a semi-automatic email about new static checker warnings.
The patch 5b92a28aae4d: "bpf: Support attaching tracing BPF program
to other BPF programs" from Nov 14, 2019, leads to the following
Smatch complaint:
kernel/bpf/btf.c:3744 btf_ctx_access()
error: we previously assumed 't' could be null (see line 3706)
kernel/bpf/btf.c
3705 /* if (t == NULL) Fall back to default BPF prog with 5 u64 arguments */
3706 nr_args = t ? btf_type_vlen(t) : 5;
^
Check
3707 if (prog->aux->attach_btf_trace) {
3708 /* skip first 'void *__data' argument in btf_trace_##name typedef */
3709 args++;
3710 nr_args--;
3711 }
3712
3713 if (arg == nr_args) {
3714 if (prog->expected_attach_type == BPF_TRACE_FEXIT) {
3715 if (!t)
3716 return true;
3717 t = btf_type_by_id(btf, t->type);
3718 } else if (prog->expected_attach_type == BPF_MODIFY_RETURN) {
3719 /* For now the BPF_MODIFY_RETURN can only be attached to
3720 * functions that return an int.
3721 */
3722 if (!t)
3723 return false;
3724
3725 t = btf_type_skip_modifiers(btf, t->type, NULL);
3726 if (!btf_type_is_int(t)) {
3727 bpf_log(log,
3728 "ret type %s not allowed for fmod_ret\n",
3729 btf_kind_str[BTF_INFO_KIND(t->info)]);
3730 return false;
3731 }
3732 }
Smatch is complaining that maybe t is NULL and prog->expected_attach_type
is neither BPF_TRACE_FEXIT nor BPF_MODIFY_RETURN.
3733 } else if (arg >= nr_args) {
3734 bpf_log(log, "func '%s' doesn't have %d-th argument\n",
3735 tname, arg + 1);
3736 return false;
3737 } else {
3738 if (!t)
3739 /* Default prog with 5 args */
3740 return true;
3741 t = btf_type_by_id(btf, args[arg].type);
3742 }
3743 /* skip modifiers */
3744 while (btf_type_is_modifier(t))
^
Dereference
3745 t = btf_type_by_id(btf, t->type);
3746 if (btf_type_is_int(t) || btf_type_is_enum(t))
regards,
dan carpenter
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-03-11 12:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-11 12:10 [bug report] bpf: Support attaching tracing BPF program to other BPF programs Dan Carpenter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).