[LTP] [PATCH] mmap18: fix when PTHREAD_STACK_MIN < PAGE_SIZE

Alexey Kodanev aleksei.kodanev@bell-sw.com
Mon Jul 12 10:03:22 CEST 2021


PTHREAD_STACK_MIN can be less than the page size, to be more
precise 2048 on musl. This value is used in the test as an
offset for a new stack address with mmap() + MAP_FIXED flag.
Though it might not be aligned to the page size.

This breaks the test with musl:

  tst_test.c:1311: TINFO: Timeout per run is 0h 05m 00s
  mmap18.c:98: TBROK: mmap(0x7fe67e2ee800,2048,3,306,-1,0) failed: EINVAL (22)
  mmap18.c:169: TFAIL: Child: exited with 2
  [...]

The fix is to align mapped_size arg to the page size.

Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
---
 testcases/kernel/syscalls/mmap/mmap18.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/syscalls/mmap/mmap18.c b/testcases/kernel/syscalls/mmap/mmap18.c
index dc2926454..b37b29890 100644
--- a/testcases/kernel/syscalls/mmap/mmap18.c
+++ b/testcases/kernel/syscalls/mmap/mmap18.c
@@ -200,11 +200,12 @@ static void grow_stack_fail(size_t stack_size, size_t mapped_size)
 
 static void run_test(void)
 {
-	size_t stack_size = 8 * PTHREAD_STACK_MIN;
+	size_t pthread_stack = LTP_ALIGN(PTHREAD_STACK_MIN, getpagesize());
+	size_t stack_size = 8 * pthread_stack;
 
-	grow_stack_success(stack_size, PTHREAD_STACK_MIN);
+	grow_stack_success(stack_size, pthread_stack);
 	grow_stack_success(stack_size, stack_size/2);
-	grow_stack_fail(stack_size, PTHREAD_STACK_MIN);
+	grow_stack_fail(stack_size, pthread_stack);
 	grow_stack_fail(stack_size, stack_size/2);
 }
 
-- 
2.25.1



More information about the ltp mailing list