OSDN Git Service

libbpf: fix libbpf_print
authorStanislav Fomichev <sdf@google.com>
Tue, 5 Feb 2019 00:20:55 +0000 (16:20 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 5 Feb 2019 01:45:31 +0000 (17:45 -0800)
commita8a1f7d09cfc7e18874786c7634c9e71384fcd4e
tree80f7023de9935668f7299c2eda0ba951eecc9e85
parent1728b11110f1f86db97a2f3d18cb89552637e391
libbpf: fix libbpf_print

With the recent print rework we now have the following problem:
pr_{warning,info,debug} expand to __pr which calls libbpf_print.
libbpf_print does va_start and calls __libbpf_pr with va_list argument.
In __base_pr we again do va_start. Because the next argument is a
va_list, we don't get correct pointer to the argument (and print noting
in my case, I don't know why it doesn't crash tbh).

Fix this by changing libbpf_print_fn_t signature to accept va_list and
remove unneeded calls to va_start in the existing users.

Alternatively, this can we solved by exporting __libbpf_pr and
changing __pr macro to (and killing libbpf_print):
{
if (__libbpf_pr)
__libbpf_pr(level, "libbpf: " fmt, ##__VA_ARGS__)
}

Signed-off-by: Stanislav Fomichev <sdf@google.com>
Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.h
tools/perf/util/bpf-loader.c
tools/testing/selftests/bpf/test_btf.c
tools/testing/selftests/bpf/test_libbpf_open.c
tools/testing/selftests/bpf/test_progs.c