[LTP] [PATCH] Patch:V2:creat07():Added new_behavior flag to detect kernel version > 6.11 : Tests that creat() succeeds (write to executed file allowed) Removed the old skip logic that did TCONF on kernel >= 6.11 Added one static variable exp_errno to store expected result: -1 means creat() should succeed ETXTBSY means it should fail with that errno setup() now sets exp_errno from kernel version Simplified verify_creat(): if expected is success, call creat(), close fd, print TPASS if expected is failure, use TST_EXP_FAIL2() for ETXTBSY Removed extra verbose kernel-info messages Removed exec of external child binary and replaced it with an in-process forked child using TST_CHECKPOINT_WAKE() + pause() Removed .resource_files from test
lepillai@linux.ibm.com
lepillai@linux.ibm.com
Wed May 13 08:48:18 CEST 2026
From: lekshmi-cpillai <lekshmi@ktes.isst.tadn.ibm.com>
Signed-off-by: lekshmi-cpillai <lepillai@linux.ibm.com>
---
testcases/kernel/syscalls/creat/creat07.c | 38 ++++++++++-------------
1 file changed, 17 insertions(+), 21 deletions(-)
diff --git a/testcases/kernel/syscalls/creat/creat07.c b/testcases/kernel/syscalls/creat/creat07.c
index c7b85ee69..f55bca2af 100644
--- a/testcases/kernel/syscalls/creat/creat07.c
+++ b/testcases/kernel/syscalls/creat/creat07.c
@@ -19,41 +19,41 @@
#define TEST_APP "creat07_child"
+static int exp_errno;
+
static void verify_creat(void)
{
pid_t pid;
pid = SAFE_FORK();
- if (pid == 0) {
- SAFE_EXECL(TEST_APP, TEST_APP, NULL);
- exit(1);
+ if (!pid) {
+ TST_CHECKPOINT_WAKE(0);
+ pause();
+ exit(0);
}
TST_CHECKPOINT_WAIT(0);
- TEST(creat(TEST_APP, O_WRONLY));
+ if (exp_errno == -1) {
+ TEST(creat(TEST_APP, O_WRONLY));
- if (TST_RET != -1) {
- tst_res(TFAIL, "creat() succeeded unexpectedly");
- return;
+ if (TST_RET < 0) {
+ tst_res(TFAIL | TTERRNO, "creat() failed unexpectedly");
+ } else {
+ SAFE_CLOSE(TST_RET);
+ tst_res(TPASS, "creat() succeeded");
+ }
+ } else {
+ TST_EXP_FAIL2(creat(TEST_APP, O_WRONLY), exp_errno);
}
- if (TST_ERR == ETXTBSY)
- tst_res(TPASS, "creat() received EXTBSY");
- else
- tst_res(TFAIL | TTERRNO, "creat() failed unexpectedly");
-
SAFE_KILL(pid, SIGKILL);
SAFE_WAITPID(pid, NULL, 0);
}
static void setup(void)
{
- if ((tst_kvercmp(6, 11, 0)) >= 0) {
- tst_brk(TCONF, "Skipping test, write to executed file is "
- "allowed since 6.11-rc1.\n"
- "2a010c412853 (\"fs: don't block i_writecount during exec\")");
- }
+ exp_errno = tst_kvercmp(6, 11, 0) >= 0 ? -1 : ETXTBSY;
}
static struct tst_test test = {
@@ -61,8 +61,4 @@ static struct tst_test test = {
.test_all = verify_creat,
.needs_checkpoints = 1,
.forks_child = 1,
- .resource_files = (const char *const []) {
- TEST_APP,
- NULL
- }
};
--
2.39.1
More information about the ltp
mailing list