From: Jonathan Bastari Thamrin check_mem_access currently creates a temp file in /dev/shm, which isn't mounted under vmtest.sh in local runs. This causes mkstemp to fail with ENOENT. The fix is similar to commit 47687a29b2c3 ("selftests/bpf: Use memfd_create instead of shm_open in cgroup_iter_memcg") where memfd_create gives a shmem-backed file with no mount needed while still reaching vfs_fallocate. Signed-off-by: Jonathan Bastari Thamrin --- tools/testing/selftests/bpf/prog_tests/d_path.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/d_path.c b/tools/testing/selftests/bpf/prog_tests/d_path.c index b7998606aa98..ec73291ef060 100644 --- a/tools/testing/selftests/bpf/prog_tests/d_path.c +++ b/tools/testing/selftests/bpf/prog_tests/d_path.c @@ -4,6 +4,7 @@ #include #include #include +#include #define MAX_PATH_LEN 128 #define MAX_FILES 7 @@ -201,7 +202,6 @@ static void test_d_path_check_types(void) static void test_d_path_mem_access(void) { int localfd = -1; - char path_template[] = "/dev/shm/d_path_loadgen.XXXXXX"; struct test_d_path__bss *bss; struct test_d_path *skel; @@ -211,13 +211,12 @@ static void test_d_path_mem_access(void) bss = skel->bss; - localfd = mkstemp(path_template); - if (!ASSERT_OK_FD(localfd, "mkstemp")) + localfd = memfd_create("d_path_loadgen", 0); + if (!ASSERT_OK_FD(localfd, "memfd_create")) goto cleanup; if (!ASSERT_OK(fallocate(localfd, 0, 0, 1024), "fallocate")) goto cleanup; - remove(path_template); if (!ASSERT_TRUE(bss->path_match_fallocate, "fallocate path")) goto cleanup; -- 2.56.0