[LTP] [PATCH] inotify: clean up build and make check findings
Jinseok Kim
always.starving0@gmail.com
Sun Mar 1 17:57:24 CET 2026
Fix various issues reported by `make` and `make check`:
- Drop ENOSYS-based logic and rely on TERRNO reporting
- Silence known format-truncation warnings locally
- Clean up string handling and permissions
- Fix minor style and prototype issues
Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
testcases/kernel/syscalls/inotify/Makefile | 1 +
testcases/kernel/syscalls/inotify/inotify.h | 13 +++-------
testcases/kernel/syscalls/inotify/inotify01.c | 4 ++-
testcases/kernel/syscalls/inotify/inotify02.c | 26 ++++++++++---------
testcases/kernel/syscalls/inotify/inotify03.c | 5 ++--
testcases/kernel/syscalls/inotify/inotify04.c | 23 ++++++++--------
testcases/kernel/syscalls/inotify/inotify05.c | 2 +-
testcases/kernel/syscalls/inotify/inotify07.c | 16 ++++++------
testcases/kernel/syscalls/inotify/inotify08.c | 5 ++--
testcases/kernel/syscalls/inotify/inotify10.c | 18 +++++++------
10 files changed, 58 insertions(+), 55 deletions(-)
diff --git a/testcases/kernel/syscalls/inotify/Makefile b/testcases/kernel/syscalls/inotify/Makefile
index 16d430864..57124c739 100644
--- a/testcases/kernel/syscalls/inotify/Makefile
+++ b/testcases/kernel/syscalls/inotify/Makefile
@@ -4,6 +4,7 @@
top_srcdir ?= ../../../..
include $(top_srcdir)/include/mk/testcases.mk
+inotify02: CFLAGS+=-Wno-format-truncation
inotify09: CFLAGS+=-pthread
inotify09: LDLIBS+=-lrt
include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/kernel/syscalls/inotify/inotify.h b/testcases/kernel/syscalls/inotify/inotify.h
index dbf814902..1bc36defa 100644
--- a/testcases/kernel/syscalls/inotify/inotify.h
+++ b/testcases/kernel/syscalls/inotify/inotify.h
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
+/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* inotify testcase common definitions.
*
@@ -33,14 +33,8 @@
static inline int safe_myinotify_init(const char *file, const int lineno, int fd)
{
if (fd < 0) {
- if (errno == ENOSYS) {
- tst_brk(TCONF,
- "%s:%d: inotify is not configured in this kernel",
+ tst_brk(TBROK | TERRNO, "%s:%d: inotify_init failed",
file, lineno);
- } else {
- tst_brk(TBROK | TERRNO, "%s:%d: inotify_init failed",
- file, lineno);
- }
}
return fd;
}
@@ -51,7 +45,8 @@ static inline int safe_myinotify_init(const char *file, const int lineno, int fd
#define SAFE_MYINOTIFY_INIT1(flags) \
safe_myinotify_init(__FILE__, __LINE__, myinotify_init1(flags))
-static inline int safe_myinotify_watch(const char *file, const int lineno, int wd, int fd, const char* fname, const char* mask)
+static inline int safe_myinotify_watch(const char *file, const int lineno, int wd,
+ int fd, const char *fname, const char *mask)
{
if (wd < 0) {
tst_brk(TBROK | TERRNO,
diff --git a/testcases/kernel/syscalls/inotify/inotify01.c b/testcases/kernel/syscalls/inotify/inotify01.c
index 972b1025e..12aadf862 100644
--- a/testcases/kernel/syscalls/inotify/inotify01.c
+++ b/testcases/kernel/syscalls/inotify/inotify01.c
@@ -40,7 +40,7 @@ static unsigned int event_set[EVENT_MAX];
static char event_buf[EVENT_BUF_LEN];
-void verify_inotify(void)
+static void verify_inotify(void)
{
int test_cnt = 0;
@@ -79,6 +79,7 @@ void verify_inotify(void)
* get list of events
*/
int len, i = 0, test_num = 0;
+
len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
/*
@@ -86,6 +87,7 @@ void verify_inotify(void)
*/
while (i < len) {
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= test_cnt) {
tst_res(TFAIL,
diff --git a/testcases/kernel/syscalls/inotify/inotify02.c b/testcases/kernel/syscalls/inotify/inotify02.c
index 314c1bd49..5f288b270 100644
--- a/testcases/kernel/syscalls/inotify/inotify02.c
+++ b/testcases/kernel/syscalls/inotify/inotify02.c
@@ -43,6 +43,7 @@ struct event_t {
char name[BUF_SIZE];
unsigned int mask;
};
+
#define FILE_NAME1 "test_file1"
#define FILE_NAME2 "test_file2"
@@ -50,7 +51,7 @@ static struct event_t event_set[EVENT_MAX];
static char event_buf[EVENT_BUF_LEN];
-void verify_inotify(void)
+static void verify_inotify(void)
{
unsigned int stored_cookie = UINT_MAX;
@@ -61,40 +62,40 @@ void verify_inotify(void)
*/
SAFE_CHMOD(".", 0755);
event_set[test_cnt].mask = IN_ISDIR | IN_ATTRIB;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
fd = SAFE_CREAT(FILE_NAME1, 0755);
event_set[test_cnt].mask = IN_CREATE;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
event_set[test_cnt].mask = IN_OPEN;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
SAFE_CLOSE(fd);
event_set[test_cnt].mask = IN_CLOSE_WRITE;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
SAFE_RENAME(FILE_NAME1, FILE_NAME2);
event_set[test_cnt].mask = IN_MOVED_FROM;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
event_set[test_cnt].mask = IN_MOVED_TO;
- strcpy(event_set[test_cnt].name, FILE_NAME2);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME2);
test_cnt++;
SAFE_GETCWD(fname1, BUF_SIZE);
snprintf(fname2, BUF_SIZE, "%s.rename1", fname1);
SAFE_RENAME(fname1, fname2);
event_set[test_cnt].mask = IN_MOVE_SELF;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
SAFE_UNLINK(FILE_NAME2);
event_set[test_cnt].mask = IN_DELETE;
- strcpy(event_set[test_cnt].name, FILE_NAME2);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME2);
test_cnt++;
/*
@@ -108,14 +109,16 @@ void verify_inotify(void)
SAFE_RENAME(fname3, fname1);
event_set[test_cnt].mask = IN_MOVE_SELF;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
int len, i = 0, test_num = 0;
+
len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
while (i < len) {
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= test_cnt) {
tst_res(TFAIL,
@@ -125,8 +128,7 @@ void verify_inotify(void)
event->cookie, event->len, event->len,
event->name);
- } else if ((event_set[test_num].mask == event->mask)
- &&
+ } else if ((event_set[test_num].mask == event->mask) &&
(!strncmp
(event_set[test_num].name, event->name,
event->len))) {
diff --git a/testcases/kernel/syscalls/inotify/inotify03.c b/testcases/kernel/syscalls/inotify/inotify03.c
index a7974dd57..8a5103bd8 100644
--- a/testcases/kernel/syscalls/inotify/inotify03.c
+++ b/testcases/kernel/syscalls/inotify/inotify03.c
@@ -40,12 +40,12 @@ static unsigned int event_set[EVENT_MAX];
static char event_buf[EVENT_BUF_LEN];
-#define DIR_MODE (S_IRWXU | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP)
+#define DIR_MODE 0750
static char *mntpoint = "mntpoint";
static int mount_flag;
-void verify_inotify(void)
+static void verify_inotify(void)
{
int ret;
int len, i, test_num;
@@ -81,6 +81,7 @@ void verify_inotify(void)
i = 0;
while (i < len) {
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= (test_cnt - 1)) {
tst_res(TFAIL,
diff --git a/testcases/kernel/syscalls/inotify/inotify04.c b/testcases/kernel/syscalls/inotify/inotify04.c
index 947623952..18a1c4a6e 100644
--- a/testcases/kernel/syscalls/inotify/inotify04.c
+++ b/testcases/kernel/syscalls/inotify/inotify04.c
@@ -35,7 +35,6 @@
/* reasonable guess as to size of 1024 events */
#define EVENT_BUF_LEN (EVENT_MAX * (EVENT_SIZE + 16))
-
#define BUF_SIZE 256
struct event_t {
@@ -46,11 +45,11 @@ struct event_t {
#define TEST_DIR "test_dir"
#define TEST_FILE "test_file"
-struct event_t event_set[EVENT_MAX];
+static struct event_t event_set[EVENT_MAX];
-char event_buf[EVENT_BUF_LEN];
+static char event_buf[EVENT_BUF_LEN];
-int fd_notify, reap_wd_file, reap_wd_dir, wd_dir, wd_file;
+static int fd_notify, reap_wd_file, reap_wd_dir, wd_dir, wd_file;
static void cleanup(void)
{
@@ -73,7 +72,7 @@ static void setup(void)
fd_notify = SAFE_MYINOTIFY_INIT();
}
-void verify_inotify(void)
+static void verify_inotify(void)
{
int i = 0, test_num = 0, len;
int test_cnt = 0;
@@ -91,10 +90,10 @@ void verify_inotify(void)
reap_wd_dir = 0;
event_set[test_cnt].mask = IN_DELETE_SELF;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
event_set[test_cnt].mask = IN_IGNORED;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
SAFE_UNLINK(TEST_FILE);
@@ -108,20 +107,21 @@ void verify_inotify(void)
* understand how Unix works.
*/
event_set[test_cnt].mask = IN_ATTRIB;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
event_set[test_cnt].mask = IN_DELETE_SELF;
- strcpy(event_set[test_cnt].name, TEST_FILE);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", TEST_FILE);
test_cnt++;
event_set[test_cnt].mask = IN_IGNORED;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
while (i < len) {
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= test_cnt) {
tst_res(TFAIL,
@@ -130,8 +130,7 @@ void verify_inotify(void)
"name=\"%.*s\"", event->wd, event->mask,
event->cookie, event->len, event->len, event->name);
- } else if ((event_set[test_num].mask == event->mask)
- &&
+ } else if ((event_set[test_num].mask == event->mask) &&
(!strncmp
(event_set[test_num].name, event->name,
event->len))) {
diff --git a/testcases/kernel/syscalls/inotify/inotify05.c b/testcases/kernel/syscalls/inotify/inotify05.c
index 82a4c7bdc..1a38056f0 100644
--- a/testcases/kernel/syscalls/inotify/inotify05.c
+++ b/testcases/kernel/syscalls/inotify/inotify05.c
@@ -36,7 +36,7 @@ static int max_events;
static char event_buf[EVENT_BUF_LEN];
-void verify_inotify(void)
+static void verify_inotify(void)
{
int i;
int len, stop;
diff --git a/testcases/kernel/syscalls/inotify/inotify07.c b/testcases/kernel/syscalls/inotify/inotify07.c
index b4000f353..258e14b92 100644
--- a/testcases/kernel/syscalls/inotify/inotify07.c
+++ b/testcases/kernel/syscalls/inotify/inotify07.c
@@ -65,7 +65,7 @@ static const char mntpoint[] = OVL_BASE_MNTPOINT;
static struct event_t event_set[EVENT_MAX];
static char event_buf[EVENT_BUF_LEN];
-void verify_inotify(void)
+static void verify_inotify(void)
{
int test_cnt = 0;
@@ -74,25 +74,26 @@ void verify_inotify(void)
*/
SAFE_CHMOD(DIR_PATH, 0755);
event_set[test_cnt].mask = IN_ISDIR | IN_ATTRIB;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
SAFE_TOUCH(FILE_PATH, 0644, NULL);
event_set[test_cnt].mask = IN_OPEN;
- strcpy(event_set[test_cnt].name, FILE_NAME);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME);
test_cnt++;
event_set[test_cnt].mask = IN_CLOSE_WRITE;
- strcpy(event_set[test_cnt].name, FILE_NAME);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME);
test_cnt++;
event_set[test_cnt].mask = IN_ATTRIB;
- strcpy(event_set[test_cnt].name, FILE_NAME);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME);
test_cnt++;
int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
-
int i = 0, test_num = 0;
+
while (i < len) {
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= test_cnt) {
tst_res(TFAIL,
@@ -101,8 +102,7 @@ void verify_inotify(void)
"name=\"%.*s\"", event->wd, event->mask,
event->cookie, event->len, event->len,
event->name);
- } else if ((event_set[test_num].mask == event->mask)
- &&
+ } else if ((event_set[test_num].mask == event->mask) &&
(!strncmp
(event_set[test_num].name, event->name,
event->len))) {
diff --git a/testcases/kernel/syscalls/inotify/inotify08.c b/testcases/kernel/syscalls/inotify/inotify08.c
index e0837cac3..154654ce3 100644
--- a/testcases/kernel/syscalls/inotify/inotify08.c
+++ b/testcases/kernel/syscalls/inotify/inotify08.c
@@ -63,7 +63,7 @@ static const char mntpoint[] = OVL_BASE_MNTPOINT;
static struct event_t event_set[EVENT_MAX];
static char event_buf[EVENT_BUF_LEN];
-void verify_inotify(void)
+static void verify_inotify(void)
{
int test_cnt = 0;
@@ -87,10 +87,11 @@ void verify_inotify(void)
SAFE_TOUCH(OVL_UPPER"/"FILE_NAME, 0644, NULL);
int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
-
int i = 0, test_num = 0;
+
while (i < len) {
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= test_cnt) {
tst_res(TFAIL,
diff --git a/testcases/kernel/syscalls/inotify/inotify10.c b/testcases/kernel/syscalls/inotify/inotify10.c
index 4c3a1d116..838ae29a3 100644
--- a/testcases/kernel/syscalls/inotify/inotify10.c
+++ b/testcases/kernel/syscalls/inotify/inotify10.c
@@ -32,7 +32,6 @@
#define EVENT_SIZE (sizeof(struct inotify_event))
#define EVENT_BUF_LEN (EVENT_MAX * (EVENT_SIZE + 16))
-
#define BUF_SIZE 256
struct event_t {
@@ -75,11 +74,11 @@ static struct tcase {
},
};
-struct event_t event_set[EVENT_MAX];
+static struct event_t event_set[EVENT_MAX];
-char event_buf[EVENT_BUF_LEN];
+static char event_buf[EVENT_BUF_LEN];
-int fd_notify, fd_notify_other;
+static int fd_notify, fd_notify_other;
static void verify_inotify(unsigned int n)
{
@@ -121,25 +120,27 @@ static void verify_inotify(unsigned int n)
if (wd_parent && (tc->parent_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_parent;
event_set[test_cnt].mask = tc->parent_mask | IN_ISDIR;
- strcpy(event_set[test_cnt].name, TEST_DIR);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name),
+ "%s", TEST_DIR);
test_cnt++;
}
if (wd_subdir && (tc->subdir_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_subdir;
event_set[test_cnt].mask = tc->subdir_mask | IN_ISDIR;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
}
if (wd_parent && (tc->parent_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_parent;
event_set[test_cnt].mask = tc->parent_mask;
- strcpy(event_set[test_cnt].name, TEST_FILE);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name),
+ "%s", TEST_FILE);
test_cnt++;
}
if (wd_child && (tc->child_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_child;
event_set[test_cnt].mask = tc->child_mask;
- strcpy(event_set[test_cnt].name, "");
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", "");
test_cnt++;
}
@@ -148,6 +149,7 @@ static void verify_inotify(unsigned int n)
while (i < len) {
struct event_t *expected = &event_set[test_num];
struct inotify_event *event;
+
event = (struct inotify_event *)&event_buf[i];
if (test_num >= test_cnt) {
tst_res(TFAIL,
--
2.43.0
More information about the ltp
mailing list