提交 bb900295 编写于 作者: F Florian Lehner 提交者: Zheng Zengkai

selftests/bpf: Print reason when a tester could not run a program

mainline inclusion
from mainline-5.11-rc1
commit 7d171672
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I5EUVD
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7d17167244f5415bc6bc90f5bb0074b6d79676b4

-------------------------------------------------

Commit 8184d44c ("selftests/bpf: skip verifier tests for unsupported
program types") added a check to skip unsupported program types. As
bpf_probe_prog_type can change errno, do_single_test should save it before
printing a reason why a supported BPF program type failed to load.

Fixes: 8184d44c ("selftests/bpf: skip verifier tests for unsupported program types")
Signed-off-by: NFlorian Lehner <dev@der-flo.net>
Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
Acked-by: NAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20201204181828.11974-2-dev@der-flo.net
(cherry picked from commit 7d171672)
Signed-off-by: NWang Yufen <wangyufen@huawei.com>
上级 3bdd4a61
...@@ -946,6 +946,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv, ...@@ -946,6 +946,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
int run_errs, run_successes; int run_errs, run_successes;
int map_fds[MAX_NR_MAPS]; int map_fds[MAX_NR_MAPS];
const char *expected_err; const char *expected_err;
int saved_errno;
int fixup_skips; int fixup_skips;
__u32 pflags; __u32 pflags;
int i, err; int i, err;
...@@ -1007,6 +1008,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv, ...@@ -1007,6 +1008,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
} }
fd_prog = bpf_load_program_xattr(&attr, bpf_vlog, sizeof(bpf_vlog)); fd_prog = bpf_load_program_xattr(&attr, bpf_vlog, sizeof(bpf_vlog));
saved_errno = errno;
/* BPF_PROG_TYPE_TRACING requires more setup and /* BPF_PROG_TYPE_TRACING requires more setup and
* bpf_probe_prog_type won't give correct answer * bpf_probe_prog_type won't give correct answer
...@@ -1023,7 +1025,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv, ...@@ -1023,7 +1025,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
if (expected_ret == ACCEPT || expected_ret == VERBOSE_ACCEPT) { if (expected_ret == ACCEPT || expected_ret == VERBOSE_ACCEPT) {
if (fd_prog < 0) { if (fd_prog < 0) {
printf("FAIL\nFailed to load prog '%s'!\n", printf("FAIL\nFailed to load prog '%s'!\n",
strerror(errno)); strerror(saved_errno));
goto fail_log; goto fail_log;
} }
#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS #ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册