[LTP] [PATCH v3 1/2] shmctl03: Fix shmmax clamped to INT_MAX in 32bit compat mode

Petr Vorel pvorel@suse.cz
Fri Sep 25 10:28:39 CEST 2026


Kernel clamped shmmax returned from shmctl(IPC_INFO) in 32bit compat
mode to INT_MAX due to a change in kernel v2.6.22 in commit
af7c693f14606 ("Cap shmmax at INT_MAX in compat shminfo").
Reflect that.

This fixes error:

    shmctl03.c:33: TFAIL: /proc/sys/kernel/shmmax != 2147483647 got 4294967295

Reported-by: Wei Gao <wegao@suse.com>
Suggested-by: Andrea Cervesato <andrea.cervesato@suse.com>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/kernel/syscalls/shmctl/shmctl03.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/testcases/kernel/syscalls/shmctl/shmctl03.c b/testcases/kernel/syscalls/shmctl/shmctl03.c
index 9e1c2f0990..f2b735dc85 100644
--- a/testcases/kernel/syscalls/shmctl/shmctl03.c
+++ b/testcases/kernel/syscalls/shmctl/shmctl03.c
@@ -16,6 +16,7 @@
 static void verify_ipcinfo(void)
 {
 	struct shminfo info;
+	unsigned long shmmax;
 
 	TEST(shmctl(0, IPC_INFO, (struct shmid_ds *)&info));
 
@@ -30,7 +31,12 @@ static void verify_ipcinfo(void)
 	else
 		tst_res(TPASS, "shmmin = 1");
 
-	TST_ASSERT_ULONG(PATH_KERN_SHMMAX, info.shmmax);
+	SAFE_FILE_SCANF(PATH_KERN_SHMMAX, "%lu", &shmmax);
+	if (tst_is_compat_mode() && info.shmmax == INT_MAX)
+		TST_EXP_LE_LU(INT_MAX, shmmax);
+	else
+		TST_EXP_EQ_LU(info.shmmax, shmmax);
+
 	TST_ASSERT_ULONG(PATH_KERN_SHMMNI, info.shmmni);
 	TST_ASSERT_ULONG(PATH_KERN_SHMALL, info.shmall);
 }
-- 
2.55.0



More information about the ltp mailing list