Skip to content

Commit 53e7025

Browse files
ahjf-07Kernel Patches Daemon
authored andcommitted
selftests/bpf: Skip bpffs debug iter checks when unavailable in test_bpffs
maps.debug/progs.debug may be inaccessible or absent (EPERM/EACCES/ENOENT) in some environments, which used to abort test_bpffs before it exercised the pin and rename checks. Treat these errors as "iter unavailable", log an INFO message, and continue with the core bpffs tests. Signed-off-by: Sun Jian <sun.jian.kdev@gmail.com>
1 parent c479f5e commit 53e7025

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

tools/testing/selftests/bpf/prog_tests/test_bpffs.c

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,52 @@
1111
/* TDIR must be in a location we can create a directory in. */
1212
#define TDIR "/tmp/test_bpffs_testdir"
1313

14-
static int read_iter(char *file)
14+
static int read_iter(const char *file, int *save_errno)
1515
{
1616
/* 1024 should be enough to get contiguous 4 "iter" letters at some point */
1717
char buf[1024];
1818
int fd, len;
1919

2020
fd = open(file, O_RDONLY);
21-
if (fd < 0)
21+
if (fd < 0) {
22+
if (save_errno)
23+
*save_errno = errno;
2224
return -1;
25+
}
2326
while ((len = read(fd, buf, sizeof(buf) - 1)) > 0) {
2427
buf[len] = '\0';
2528
if (strstr(buf, "iter")) {
2629
close(fd);
2730
return 0;
2831
}
2932
}
33+
if (save_errno)
34+
*save_errno = (len < 0) ? errno : 0;
3035
close(fd);
3136
return -1;
3237
}
3338

39+
static bool is_iter_skip_err(int err, int serrno)
40+
{
41+
return err && (serrno == EPERM || serrno == EACCES || serrno == ENOENT);
42+
}
43+
44+
static int read_iter_or_skip(const char *file)
45+
{
46+
int serrno = 0;
47+
int err = read_iter(file, &serrno);
48+
49+
if (is_iter_skip_err(err, serrno)) {
50+
fprintf(stderr,
51+
"INFO: %s unavailable (%d), skipping iter check\n",
52+
file,
53+
serrno);
54+
return 0;
55+
}
56+
57+
return err;
58+
}
59+
3460
static int fn(void)
3561
{
3662
struct stat a, b, c;
@@ -69,13 +95,16 @@ static int fn(void)
6995
if (!ASSERT_OK(err, "mount bpffs " TDIR "/fs2"))
7096
goto out;
7197

72-
err = read_iter(TDIR "/fs1/maps.debug");
73-
if (!ASSERT_OK(err, "reading " TDIR "/fs1/maps.debug"))
98+
err = read_iter_or_skip(TDIR "/fs1/maps.debug");
99+
if (err) {
100+
ASSERT_OK(err, "reading " TDIR "/fs1/maps.debug");
74101
goto out;
75-
err = read_iter(TDIR "/fs2/progs.debug");
76-
if (!ASSERT_OK(err, "reading " TDIR "/fs2/progs.debug"))
102+
}
103+
err = read_iter_or_skip(TDIR "/fs2/progs.debug");
104+
if (err) {
105+
ASSERT_OK(err, "reading " TDIR "/fs2/progs.debug");
77106
goto out;
78-
107+
}
79108
err = mkdir(TDIR "/fs1/a", 0777);
80109
if (!ASSERT_OK(err, "creating " TDIR "/fs1/a"))
81110
goto out;

0 commit comments

Comments
 (0)