[LTP] [PATCH v3] flock: Add test for verifying EINTR errno

Petr Vorel pvorel@suse.cz
Mon Feb 3 15:22:13 CET 2025


Hi Avinesh, all,

...
> +++ b/testcases/kernel/syscalls/flock/flock07.c
...
> +static void handler(int sig)
> +{
> +	tst_res(TINFO, "Received signal: %d", sig);
How about print a signal constant/name?

	tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
> +}
...
> +static void verify_flock(void)
> +{
> +	pid_t pid;
> +	int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
> +	int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
How about to setup file descriptors in setup() and close them in cleanup()?

I suggest to merge with the change below.

> +
> +	TST_EXP_PASS(flock(fd1, LOCK_EX));
> +
> +	pid = SAFE_FORK();
> +	if (!pid) {
> +		child_do(fd2);
> +		exit(0);
> +	} else {
> +		sleep(1);
> +		SAFE_KILL(pid, SIGUSR1);
> +		SAFE_WAITPID(pid, NULL, 0);
> +	}
> +
> +	SAFE_CLOSE(fd1);
> +	SAFE_CLOSE(fd2);
> +}

Kind regards,
Petr

+++ testcases/kernel/syscalls/flock/flock07.c
@@ -17,14 +17,27 @@
 
 #define TEMPFILE "test_eintr"
 
+static int fd1 = -1, fd2 = -1;
+
 static void handler(int sig)
 {
-	tst_res(TINFO, "Received signal: %d", sig);
+	tst_res(TINFO, "Received signal: %s (%d)", tst_strsig(sig), sig);
 }
 
 static void setup(void)
 {
 	SAFE_TOUCH(TEMPFILE, 0777, NULL);
+	fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
+	fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
+}
+
+static void cleanup(void)
+{
+	if (fd1 >= 0)
+		SAFE_CLOSE(fd1);
+
+	if (fd2 >= 0)
+		SAFE_CLOSE(fd2);
 }
 
 static void child_do(int fd)
@@ -42,8 +55,6 @@ static void child_do(int fd)
 static void verify_flock(void)
 {
 	pid_t pid;
-	int fd1 = SAFE_OPEN(TEMPFILE, O_RDWR);
-	int fd2 = SAFE_OPEN(TEMPFILE, O_RDWR);
 
 	TST_EXP_PASS(flock(fd1, LOCK_EX));
 
@@ -56,13 +67,11 @@ static void verify_flock(void)
 		SAFE_KILL(pid, SIGUSR1);
 		SAFE_WAITPID(pid, NULL, 0);
 	}
-
-	SAFE_CLOSE(fd1);
-	SAFE_CLOSE(fd2);
 }
 
 static struct tst_test test = {
 	.setup = setup,
+	.cleanup = cleanup,
 	.test_all = verify_flock,
 	.needs_tmpdir = 1,
 	.needs_root = 1,


More information about the ltp mailing list