[LTP] [PATCH] open: fix directory verification and misleading test description

Jinseok Kim always.starving0@gmail.com
Wed Feb 11 18:16:10 CET 2026


The directory test treated S_IFDIR as a permission bit and verified
it using a generic st_mode bitwise check, which is not appropriate
for file type verification.

Use S_ISDIR() when verifying directories and keep bitwise checks
only for permission bits such as S_ISVTX.

The directory test case also referred to a "directory bit", which is
misleading since directories are identified by file type rather than
a permission bit.

Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
 testcases/kernel/syscalls/open/open01.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/testcases/kernel/syscalls/open/open01.c b/testcases/kernel/syscalls/open/open01.c
index baf73ab11..1355592e1 100644
--- a/testcases/kernel/syscalls/open/open01.c
+++ b/testcases/kernel/syscalls/open/open01.c
@@ -37,7 +37,7 @@ static struct tcase {
 	char *desc;
 } tcases[] = {
 	{TEST_FILE, O_RDWR | O_CREAT, 01444, S_ISVTX, "sticky bit"},
-	{TEST_DIR, O_DIRECTORY, 0, S_IFDIR, "sirectory bit"}
+	{TEST_DIR, O_DIRECTORY, 0, S_IFDIR, "directory"}
 };

 static void verify_open(unsigned int n)
@@ -53,11 +53,17 @@ static void verify_open(unsigned int n)
 	fd = TST_RET;

 	SAFE_FSTAT(fd, &buf);
-	if (!(buf.st_mode & tc->tst_bit))
-		tst_res(TFAIL, "%s is cleared unexpectedly", tc->desc);
-	else
-		tst_res(TPASS, "%s is set as expected", tc->desc);
-
+	if (tc->tst_bit == S_ISVTX) {
+		if (!(buf.st_mode & S_ISVTX))
+			tst_res(TFAIL, "%s is cleared unexpectedly", tc->desc);
+		else
+			tst_res(TPASS, "%s is set as expected", tc->desc);
+	} else if (tc->tst_bit == S_IFDIR) {
+		if (!S_ISDIR(buf.st_mode))
+			tst_res(TFAIL, "%s is not a directory", tc->desc);
+		else
+			tst_res(TPASS, "%s is a directory", tc->desc);
+	}
 	SAFE_CLOSE(fd);
 	if (S_ISREG(buf.st_mode))
 		SAFE_UNLINK(tc->filename);
--
2.43.0


More information about the ltp mailing list