aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcaiyinyu <caiyinyu@loongson.cn>2025-08-14 16:28:46 +0800
committercaiyinyu <caiyinyu@loongson.cn>2025-08-19 09:05:32 +0800
commitd4ccda8e69f29ea3600c1d1cbc7e32db4e186ea4 (patch)
tree93f35ad9b68aeca86fbace8085f4319b671bd0f9
parentbd4628f3f18ac312408782eea450429c6f044860 (diff)
downloadglibc-d4ccda8e69f29ea3600c1d1cbc7e32db4e186ea4.zip
glibc-d4ccda8e69f29ea3600c1d1cbc7e32db4e186ea4.tar.gz
glibc-d4ccda8e69f29ea3600c1d1cbc7e32db4e186ea4.tar.bz2
malloc: Fix tst bug in malloc/tst-free-errno-malloc-hugetlb1.HEADmaster
When transparent hugepages (THP) are configured to 32MB on x86/loongarch systems, the current big_size value may not be sufficiently large to guarantee that free(ptr) [1] will call munmap(ptr_aligned, big_size). Tested on x86_64 and loongarch64. PS: Without this patch and using 32M THP, there is a about 50% chance that malloc/tst-free-errno-malloc-hugetlb1 will fail on both x86_64 and loongarch64. [1] malloc/tst-free-errno.c: ... errno = 1789; /* This call to free() is supposed to call munmap (ptr_aligned, big_size); which increases the number of VMAs by 1, which is supposed to fail. */ -> free (ptr); TEST_VERIFY (get_errno () == 1789); } ... Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
-rw-r--r--malloc/tst-free-errno.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/malloc/tst-free-errno.c b/malloc/tst-free-errno.c
index 0e7a0f2..1c50860 100644
--- a/malloc/tst-free-errno.c
+++ b/malloc/tst-free-errno.c
@@ -88,7 +88,7 @@ do_test (void)
FAIL_EXIT1 ("cannot create temporary file");
/* Do a large memory allocation. */
- size_t big_size = 0x1000000;
+ size_t big_size = 0x3000000;
void * volatile ptr = xmalloc (big_size - 0x100);
char *ptr_aligned = (char *) ((uintptr_t) ptr & ~(pagesize - 1));
/* This large memory allocation allocated a memory area