Linux Test Project
 help / color / mirror / Atom feed
From: Li Wang <li.wang@linux.dev>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH] ima: rewrite ima_mmap auxiliary with TST_NO_DEFAULT_MAIN
Date: Thu,  7 May 2026 17:46:43 +0800	[thread overview]
Message-ID: <20260507094643.47079-1-li.wang@linux.dev> (raw)

Commit 7276e7c154 ("ima_violations.sh: ima_mmap.c: Replace sleep with
checkpoints") called tst_reinit() inside the run() callback of a
struct tst_test based binary. This is incorrect because the test
framework has already initialized the IPC during setup, and calling
tst_reinit() re-maps the shared memory to the parent shell's IPC
region, corrupting the C binary's own test infrastructure.

Fix this by converting ima_mmap to a TST_NO_DEFAULT_MAIN helper
binary. In this mode there is no prior framework initialization, so
tst_reinit() correctly attaches to the parent shell test's shared
memory for checkpoint communication, following the same pattern used
by other LTP helper binaries (e.g. execvp01_child).

Fixes: 7276e7c154 ("ima_violations.sh: ima_mmap.c: Replace sleep with checkpoints")
Signed-off-by: Li Wang <li.wang@linux.dev>
---
 .../security/integrity/ima/src/ima_mmap.c     | 40 ++++++-------------
 .../integrity/ima/tests/ima_violations.sh     |  5 +--
 2 files changed, 14 insertions(+), 31 deletions(-)

diff --git a/testcases/kernel/security/integrity/ima/src/ima_mmap.c b/testcases/kernel/security/integrity/ima/src/ima_mmap.c
index 09b22fd4f..1861147f8 100644
--- a/testcases/kernel/security/integrity/ima/src/ima_mmap.c
+++ b/testcases/kernel/security/integrity/ima/src/ima_mmap.c
@@ -7,46 +7,30 @@
  * Mimi Zohar <zohar@us.ibm.com>
  */
 
+#define TST_NO_DEFAULT_MAIN
 #include "tst_test.h"
 
 #define MMAPSIZE 1024
 
-static char *filename;
-static void *file;
-static int fd;
-
-static void cleanup(void)
+int main(int argc, char *argv[])
 {
-	if (file)
-		SAFE_MUNMAP(file, MMAPSIZE);
-
-	if (fd > 0)
-		SAFE_CLOSE(fd);
-}
+	int fd;
+	void *file;
 
-static void run(void)
-{
-	if (!filename)
-		tst_brk(TBROK, "missing filename (-f filename)");
+	tst_reinit();
 
-	fd = SAFE_OPEN(filename, O_CREAT | O_RDWR, S_IRWXU);
+	if (argc != 2)
+		tst_brk(TBROK, "usage: ima_mmap <filename>");
 
+	fd = SAFE_OPEN(argv[1], O_CREAT | O_RDWR, S_IRWXU);
 	file = SAFE_MMAP(NULL, MMAPSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
 	SAFE_CLOSE(fd);
 
-	tst_reinit();
-	TST_CHECKPOINT_WAIT(0);
-	/* keep running until ima_violations.sh open and close file */
+	/* Waiting until ima_violations.sh open and close file */
 	TST_CHECKPOINT_WAKE_AND_WAIT(0);
 
+	SAFE_MUNMAP(file, MMAPSIZE);
 	tst_res(TPASS, "test completed");
-}
 
-static struct tst_test test = {
-	.options = (struct tst_option[]) {
-		{"f:", &filename, "File to mmap"},
-		{}
-	},
-	.test_all = run,
-	.cleanup = cleanup,
-};
+	return 0;
+}
diff --git a/testcases/kernel/security/integrity/ima/tests/ima_violations.sh b/testcases/kernel/security/integrity/ima/tests/ima_violations.sh
index d7dcd077b..6271bba35 100755
--- a/testcases/kernel/security/integrity/ima/tests/ima_violations.sh
+++ b/testcases/kernel/security/integrity/ima/tests/ima_violations.sh
@@ -170,11 +170,10 @@ test3()
 
 	echo 'testing testing' > $FILE
 
-	ima_mmap -f $FILE &
+	ima_mmap $FILE &
 	pid=$!
 
-	# wait for violations appear in logs
-	TST_CHECKPOINT_WAKE_AND_WAIT 0
+	TST_CHECKPOINT_WAIT 0
 
 	open_file_read
 	close_file_read
-- 
2.54.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

             reply	other threads:[~2026-05-07  9:47 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-07  9:46 Li Wang [this message]
2026-05-07 10:21 ` [LTP] [PATCH] ima: rewrite ima_mmap auxiliary with TST_NO_DEFAULT_MAIN Cyril Hrubis
2026-05-07 11:34 ` Andrea Cervesato via ltp
2026-05-07 12:05   ` Li Wang
2026-05-07 11:58 ` [LTP] " linuxtestproject.agent
2026-05-12 16:45 ` [LTP] [PATCH] " Petr Vorel

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=20260507094643.47079-1-li.wang@linux.dev \
    --to=li.wang@linux.dev \
    --cc=ltp@lists.linux.it \
    /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