mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-04 16:15:11 +00:00
selftests/bpf: Avoid errno clobbering
Print a message when the returned error is about a program type being not supported or because of permission problems. These messages are expected if the program to test was actually executed. Signed-off-by: Florian Lehner <dev@der-flo.net> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20201204181828.11974-3-dev@der-flo.net
This commit is contained in:
parent
7d17167244
commit
5f61b7c697
1 changed files with 22 additions and 5 deletions
|
@ -875,19 +875,36 @@ static int do_prog_test_run(int fd_prog, bool unpriv, uint32_t expected_val,
|
|||
__u8 tmp[TEST_DATA_LEN << 2];
|
||||
__u32 size_tmp = sizeof(tmp);
|
||||
uint32_t retval;
|
||||
int err;
|
||||
int err, saved_errno;
|
||||
|
||||
if (unpriv)
|
||||
set_admin(true);
|
||||
err = bpf_prog_test_run(fd_prog, 1, data, size_data,
|
||||
tmp, &size_tmp, &retval, NULL);
|
||||
saved_errno = errno;
|
||||
|
||||
if (unpriv)
|
||||
set_admin(false);
|
||||
if (err && errno != 524/*ENOTSUPP*/ && errno != EPERM) {
|
||||
printf("Unexpected bpf_prog_test_run error ");
|
||||
return err;
|
||||
|
||||
if (err) {
|
||||
switch (saved_errno) {
|
||||
case 524/*ENOTSUPP*/:
|
||||
printf("Did not run the program (not supported) ");
|
||||
return 0;
|
||||
case EPERM:
|
||||
if (unpriv) {
|
||||
printf("Did not run the program (no permission) ");
|
||||
return 0;
|
||||
}
|
||||
/* fallthrough; */
|
||||
default:
|
||||
printf("FAIL: Unexpected bpf_prog_test_run error (%s) ",
|
||||
strerror(saved_errno));
|
||||
return err;
|
||||
}
|
||||
}
|
||||
if (!err && retval != expected_val &&
|
||||
|
||||
if (retval != expected_val &&
|
||||
expected_val != POINTER_VALUE) {
|
||||
printf("FAIL retval %d != %d ", retval, expected_val);
|
||||
return 1;
|
||||
|
|
Loading…
Reference in a new issue