public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH] lib: tst_fd: Add kernel version check to memfd_secret
@ 2024-06-18  8:49 Nobuhiro Iwamatsu
  2024-06-18 10:15 ` Cyril Hrubis
  2024-06-21 11:09 ` Petr Vorel
  0 siblings, 2 replies; 14+ messages in thread
From: Nobuhiro Iwamatsu @ 2024-06-18  8:49 UTC (permalink / raw)
  To: ltp

memfd_secret is a syscall added since 5.14. On earlier kernels, tests such
as accept03, readahead01 and splice07 that use memfd_secret fail.
This adds a kernel version check to the tst_fd library when running tests using
memfd_secret.

Test log on linux-5.10.162/arm32 with version 20240524:
```
$ ./testcases/kernel/syscalls/accept/accept03
tst_test.c:1733: TINFO: LTP version: 20240524
tst_test.c:1617: TINFO: Timeout per run is 0h 00m 30s
accept03.c:58: TPASS: accept() on file : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on O_PATH file : EBADF (9)
accept03.c:58: TPASS: accept() on directory : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on /dev/zero : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on /proc/self/maps : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on pipe read end : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on pipe write end : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on epoll : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on eventfd : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on signalfd : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on timerfd : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on pidfd : ENOTSOCK (88)
tst_fd.c:151: TCONF: Skipping fanotify: ENOSYS (38)
accept03.c:58: TPASS: accept() on inotify : ENOTSOCK (88)
tst_fd.c:170: TCONF: Skipping userfaultfd: ENOSYS (38)
accept03.c:58: TPASS: accept() on perf event : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on io uring : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on bpf map : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on fsopen : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on fspick : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on open_tree : EBADF (9)
accept03.c:58: TPASS: accept() on memfd : ENOTSOCK (88)
tst_test.c:1677: TBROK: Test killed by SIGILL!

Summary:
passed   20
failed   0
broken   1
skipped  2
warnings 0
```

Closed: #1145
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
---
 lib/tst_fd.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/tst_fd.c b/lib/tst_fd.c
index 6538a098c..53f583fa0 100644
--- a/lib/tst_fd.c
+++ b/lib/tst_fd.c
@@ -255,8 +255,16 @@ static void open_memfd(struct tst_fd *fd)
 
 static void open_memfd_secret(struct tst_fd *fd)
 {
+	if ((tst_kvercmp(5, 14, 0)) < 0) {
+		tst_res(TINFO, "accept() on %s: Linux kernel version is before than v5.14", tst_fd_desc(fd));
+		errno = ENOSYS;
+		goto skip;
+	}
+
 	fd->fd = syscall(__NR_memfd_secret, 0);
+
 	if (fd->fd < 0) {
+skip:
 		tst_res(TCONF | TERRNO,
 			"Skipping %s", tst_fd_desc(fd));
 	}
-- 
2.43.0



-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 14+ messages in thread
* [LTP] [PATCH] lib: tst_fd: Add kernel version check to memfd_secret
@ 2024-06-18  9:09 Nobuhiro Iwamatsu
  2024-06-21 11:13 ` Petr Vorel
  0 siblings, 1 reply; 14+ messages in thread
From: Nobuhiro Iwamatsu @ 2024-06-18  9:09 UTC (permalink / raw)
  To: ltp

memfd_secret is a syscall added since 5.14. On earlier kernels, tests such
as accept03, readahead01 and splice07 that use memfd_secret fail.
This adds a kernel version check to the tst_fd library when running tests using
memfd_secret.

Test log on linux-5.10.162/arm32 with version 20240524:
```
$ ./testcases/kernel/syscalls/accept/accept03
tst_test.c:1733: TINFO: LTP version: 20240524
tst_test.c:1617: TINFO: Timeout per run is 0h 00m 30s
accept03.c:58: TPASS: accept() on file : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on O_PATH file : EBADF (9)
accept03.c:58: TPASS: accept() on directory : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on /dev/zero : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on /proc/self/maps : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on pipe read end : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on pipe write end : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on epoll : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on eventfd : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on signalfd : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on timerfd : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on pidfd : ENOTSOCK (88)
tst_fd.c:151: TCONF: Skipping fanotify: ENOSYS (38)
accept03.c:58: TPASS: accept() on inotify : ENOTSOCK (88)
tst_fd.c:170: TCONF: Skipping userfaultfd: ENOSYS (38)
accept03.c:58: TPASS: accept() on perf event : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on io uring : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on bpf map : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on fsopen : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on fspick : ENOTSOCK (88)
accept03.c:58: TPASS: accept() on open_tree : EBADF (9)
accept03.c:58: TPASS: accept() on memfd : ENOTSOCK (88)
tst_test.c:1677: TBROK: Test killed by SIGILL!

Summary:
passed   20
failed   0
broken   1
skipped  2
warnings 0
```

Closed: #1145
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
---
 lib/tst_fd.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/tst_fd.c b/lib/tst_fd.c
index 6538a098c..53f583fa0 100644
--- a/lib/tst_fd.c
+++ b/lib/tst_fd.c
@@ -255,8 +255,16 @@ static void open_memfd(struct tst_fd *fd)
 
 static void open_memfd_secret(struct tst_fd *fd)
 {
+	if ((tst_kvercmp(5, 14, 0)) < 0) {
+		tst_res(TINFO, "accept() on %s: Linux kernel version is before than v5.14", tst_fd_desc(fd));
+		errno = ENOSYS;
+		goto skip;
+	}
+
 	fd->fd = syscall(__NR_memfd_secret, 0);
+
 	if (fd->fd < 0) {
+skip:
 		tst_res(TCONF | TERRNO,
 			"Skipping %s", tst_fd_desc(fd));
 	}
-- 
2.43.0



-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-07-16  4:26 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-18  8:49 [LTP] [PATCH] lib: tst_fd: Add kernel version check to memfd_secret Nobuhiro Iwamatsu
2024-06-18 10:15 ` Cyril Hrubis
2024-06-19  5:24   ` nobuhiro1.iwamatsu
2024-06-19 17:33     ` Petr Vorel
2024-06-20  1:22       ` nobuhiro1.iwamatsu
2024-06-20 13:25         ` Petr Vorel
2024-06-21  9:07           ` Cyril Hrubis
2024-06-21  9:05     ` Cyril Hrubis
2024-06-21 11:09 ` Petr Vorel
2024-06-28  8:40   ` nobuhiro1.iwamatsu
2024-07-12 18:40     ` Edward Liaw via ltp
2024-07-16  4:25       ` nobuhiro1.iwamatsu
  -- strict thread matches above, loose matches on Subject: below --
2024-06-18  9:09 Nobuhiro Iwamatsu
2024-06-21 11:13 ` Petr Vorel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox