Commit 7d171672 authored by Florian Lehner's avatar Florian Lehner Committed by Andrii Nakryiko

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

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: default avatarFlorian Lehner <dev@der-flo.net>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Acked-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20201204181828.11974-2-dev@der-flo.net
parent 2fa3515c
...@@ -936,6 +936,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv, ...@@ -936,6 +936,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;
...@@ -997,6 +998,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv, ...@@ -997,6 +998,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
...@@ -1013,7 +1015,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv, ...@@ -1013,7 +1015,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%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment