On 05/29/2019 04:26 PM, Quentin Monnet wrote: > There are two functions in libbpf that support passing a log_level > parameter for the verifier for loading programs: > bpf_object__load_xattr() and bpf_prog_load_xattr(). Both accept an > attribute object containing the log_level, and apply it to the programs > to load. > > It turns out that to effectively load the programs, the latter function > eventually relies on the former. This was not taken into account when > adding support for log_level in bpf_object__load_xattr(), and the > log_level passed to bpf_prog_load_xattr() later gets overwritten with a > zero value, thus disabling verifier logs for the program in all cases: > > bpf_prog_load_xattr() // prog->log_level = attr1->log_level; > -> bpf_object__load() // attr2->log_level = 0; > -> bpf_object__load_xattr() // <pass prog and attr2> > -> bpf_object__load_progs() // prog->log_level = attr2->log_level; > > Fix this by OR-ing the log_level in bpf_object__load_progs(), instead of > overwriting it. > > v2: Fix commit log description (confusion on function names in v1). > > Fixes: 60276f984998 ("libbpf: add bpf_object__load_xattr() API function to pass log_level") > Reported-by: Alexei Starovoitov <ast@xxxxxxxxxx> > Signed-off-by: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx> That's better, applied, thanks!