From: Stephen Bertram via ltp <ltp@lists.linux.it>
To: ltp@lists.linux.it
Cc: Stephen Bertram <sbertram@redhat.com>
Subject: [LTP] [PATCH v2] accept03/tst_fd: Harden parallel runs against shared path races
Date: Wed, 4 Nov 2026 11:46:36 -0500 [thread overview]
Message-ID: <20261104164638.407069-1-sbertram@redhat.com> (raw)
In-Reply-To: <20261104144643.377172-1-sbertram@redhat.com>
From: Stephen Bertram <sbertram@redhat.com>
Concurrent syscall runs can TBROK in tst_fd when multiple processes
race on fixed fd_file/fd_dir names (unlink ENOENT). Use pid-unique
paths with O_EXCL, distinct names for the file and O_PATH cases.
This covers accept03, epoll_pwait06, ioctl_pidfd01, and splice07,
which call TST_FD_FOREACH without a private tmpdir.
Signed-off-by: Stephen Bertram <sbertram@redhat.com>
---
lib/tst_fd.c | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/lib/tst_fd.c b/lib/tst_fd.c
index 6538a098c..5d4430cf8 100644
--- a/lib/tst_fd.c
+++ b/lib/tst_fd.c
@@ -30,29 +30,42 @@ struct tst_fd_desc {
const char *desc;
};
+static void fd_path(char *buf, size_t len, const char *prefix)
+{
+ snprintf(buf, len, "%s_%d", prefix, getpid());
+}
+
static void open_file(struct tst_fd *fd)
{
- fd->fd = SAFE_OPEN("fd_file", O_RDWR | O_CREAT, 0666);
- SAFE_UNLINK("fd_file");
+ char path[64];
+
+ fd_path(path, sizeof(path), "fd_file");
+ fd->fd = SAFE_OPEN(path, O_RDWR | O_CREAT | O_EXCL, 0666);
+ SAFE_UNLINK(path);
}
static void open_path(struct tst_fd *fd)
{
+ char path[64];
int tfd;
- tfd = SAFE_CREAT("fd_file", 0666);
+ fd_path(path, sizeof(path), "fd_path");
+ tfd = SAFE_OPEN(path, O_RDWR | O_CREAT | O_EXCL, 0666);
SAFE_CLOSE(tfd);
- fd->fd = SAFE_OPEN("fd_file", O_PATH);
+ fd->fd = SAFE_OPEN(path, O_PATH);
- SAFE_UNLINK("fd_file");
+ SAFE_UNLINK(path);
}
static void open_dir(struct tst_fd *fd)
{
- SAFE_MKDIR("fd_dir", 0700);
- fd->fd = SAFE_OPEN("fd_dir", O_DIRECTORY);
- SAFE_RMDIR("fd_dir");
+ char path[64];
+
+ fd_path(path, sizeof(path), "fd_dir");
+ SAFE_MKDIR(path, 0700);
+ fd->fd = SAFE_OPEN(path, O_DIRECTORY);
+ SAFE_RMDIR(path);
}
static void open_dev_zero(struct tst_fd *fd)
--
2.55.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2026-11-04 16:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-04 14:46 [LTP] [PATCH v1] accept03/tst_fd: Harden parallel runs against shared path races Stephen Bertram via ltp
2026-11-04 15:14 ` Cyril Hrubis
2026-11-04 16:46 ` Stephen Bertram via ltp [this message]
2026-11-04 18:32 ` [LTP] [PATCH v2] accept03/tst_fd: Harden parallel runs against Petr Vorel
2026-11-05 10:33 ` Cyril Hrubis
2026-11-04 19:00 ` [LTP] accept03/tst_fd: Harden parallel runs against shared path races linuxtestproject.agent
2026-11-04 20:35 ` [LTP] [PATCH v3] " Stephen Bertram via ltp
2026-11-05 0:38 ` [LTP] " linuxtestproject.agent
2026-11-06 12:19 ` [LTP] [PATCH v3] " Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261104164638.407069-1-sbertram@redhat.com \
--to=ltp@lists.linux.it \
--cc=sbertram@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox