[LTP] [PATCH 1/1] hugeshmat04: Restore the correct shmmax value

Leo Yu-Chi Liang ycliang@andestech.com
Thu Aug 3 12:30:04 CEST 2023


The type of shmmax is unsinged long in Linux kernel and the default value
is ((~0UL) - (1UL << 24)). If we try to access this value with %ld format
string in scanf-like function, we end up getting different incorrect values
depends on the implementation of different libc.

Fix this by accessing shmmax with the correct %lu format string.

Signed-off-by: Leo Yu-Chi Liang <ycliang@andestech.com>
---
 testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c
index 50efa8a52..b3e7c272a 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat04.c
@@ -83,12 +83,12 @@ static void setup(void)
 	long hpage_size, orig_hugepages;
 
 	orig_hugepages = get_sys_tune("nr_hugepages");
-	SAFE_FILE_SCANF(PATH_SHMMAX, "%ld", &orig_shmmax);
-	SAFE_FILE_PRINTF(PATH_SHMMAX, "%ld", (long)SIZE);
-	SAFE_FILE_SCANF(PATH_SHMMAX, "%ld", &new_shmmax);
+	SAFE_FILE_SCANF(PATH_SHMMAX, "%lu", &orig_shmmax);
+	SAFE_FILE_PRINTF(PATH_SHMMAX, "%lu", (long)SIZE);
+	SAFE_FILE_SCANF(PATH_SHMMAX, "%lu", &new_shmmax);
 
 	if (new_shmmax < SIZE)
-		tst_brk(TCONF,	"shmmax too low, have: %ld", new_shmmax);
+		tst_brk(TCONF,	"shmmax too low, have: %lu", new_shmmax);
 
 	hpage_size = SAFE_READ_MEMINFO("Hugepagesize:") * 1024;
 
@@ -99,7 +99,7 @@ static void setup(void)
 static void cleanup(void)
 {
 	if (orig_shmmax != -1)
-		SAFE_FILE_PRINTF(PATH_SHMMAX, "%ld", orig_shmmax);
+		SAFE_FILE_PRINTF(PATH_SHMMAX, "%lu", orig_shmmax);
 }
 
 static struct tst_test test = {
-- 
2.34.1



More information about the ltp mailing list