[PATCH v2 2/2] selftests/bpf: Use memfd_create instead of mkstemp in d_path

From: Jonathan Bastari Thamrin via B4 Relay

Date: Thu Nov 05 2026 - 22:37:49 EST


From: Jonathan Bastari Thamrin <thamrinjonathan@xxxxxxxxx>

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 <thamrinjonathan@xxxxxxxxx>
---
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 <sys/stat.h>
#include <linux/sched.h>
#include <sys/syscall.h>
+#include <sys/mman.h>

#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