Re: [PATCH bpf v1 3/3] tools/resolve_btfids: Demote unresolved symbol message to debug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Nov 20, 2021 at 12:46:58AM IST, Kumar Kartikeya Dwivedi wrote:
> On Wed, Nov 17, 2021 at 10:50:43AM IST, Andrii Nakryiko wrote:
> > On Mon, Nov 15, 2021 at 11:18 AM Kumar Kartikeya Dwivedi
> > <memxor@xxxxxxxxx> wrote:
> > >
> > > resolve_btfids prints a warning when it finds an unresolved symbol,
> > > (id == 0) in id_patch. This can be the case for BTF sets that are empty
> > > (due to disabled config options), hence printing warnings for certain
> > > builds, most recently seen in [0]. Hence, demote the warning to debug
> > > log level to avoid build time noise.
> > >
> > >   [0]: https://lore.kernel.org/all/1b99ae14-abb4-d18f-cc6a-d7e523b25542@xxxxxxxxx
> > >
> > > Fixes: 0e32dfc80bae ("bpf: Enable TCP congestion control kfunc from modules")
> > > Reported-by: Pavel Skripkin <paskripkin@xxxxxxxxx>
> > > Signed-off-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx>
> > > ---
> > >  tools/bpf/resolve_btfids/main.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/tools/bpf/resolve_btfids/main.c b/tools/bpf/resolve_btfids/main.c
> > > index a59cb0ee609c..833bfcc9ccf6 100644
> > > --- a/tools/bpf/resolve_btfids/main.c
> > > +++ b/tools/bpf/resolve_btfids/main.c
> > > @@ -569,7 +569,7 @@ static int id_patch(struct object *obj, struct btf_id *id)
> > >         int i;
> > >
> > >         if (!id->id) {
> > > -               pr_err("WARN: resolve_btfids: unresolved symbol %s\n", id->name);
> > > +               pr_debug("WARN: resolve_btfids: unresolved symbol %s\n", id->name);
> >
> > This is an important warning that helps detect some misconfiguration,
> > we cannot just hide it. If it really is happening for empty lists
> > (why?), we should handle empty lists better, but not hide the warning.
> >
>
> +Cc Jiri
>
> Sorry for the delay. The 'why' is because in case of empty BTF set, the id->cnt
> aliasing over id->id (for non-set __BTF_ID_*) is zero, so it trips over when it
> sees it as 0 for empty set in id_patch.
>
> So, what would be your opinion on how to handle this case? Ignore the warning
> case for empty sets specifically? (e.g. using string comparison in id_patch for
> id->name, or split id and cnt out of union and assign non-zero to id in case cnt

Ah, I realized after sending that actually would be far more work (and also
confusing/error prone), since it is copied to ptr[idx] as id->id once in
id_patch and then used as cnt for sorting in sets_patch, which would break
qsort. Just recording that it is a set in btf_id struct might be better.

--
Kartikeya



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux