[LTP] [PATCH v2 1/1] overcommit_memory: Disable optimization for malloc to prevent false positives
Jan Polensky
japo@linux.ibm.com
Thu May 22 17:21:18 CEST 2025
When compiling with GCC 15.1.1+, the default-enabled -fmalloc-dce=2 and
-fallocation-dce under -O2 can eliminate the entire malloc block because its
result is only compared to NULL and/or passed to free().
This leads to false positives in tests that expect malloc() to fail under memory
pressure, as the allocation is optimized away.
Disable this optimization for the affected function to preserve the intended
test behavior.
References: https://gcc.gnu.org/onlinedocs/gcc-15.1.0/gcc/Optimize-Options.html
Signed-off-by: Jan Polensky <japo@linux.ibm.com>
---
Changes since v1 (thanks to Cyril Hrubis):
- Use LTP_VAR_USED macro to prevent GCC from optimizing away malloc().
testcases/kernel/mem/tunable/overcommit_memory.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/testcases/kernel/mem/tunable/overcommit_memory.c b/testcases/kernel/mem/tunable/overcommit_memory.c
index b5beebbcd3c4..9b2cb479d5ee 100644
--- a/testcases/kernel/mem/tunable/overcommit_memory.c
+++ b/testcases/kernel/mem/tunable/overcommit_memory.c
@@ -62,6 +62,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
+#include "tst_common.h"
#include "tst_test.h"
#define DEFAULT_OVER_RATIO 50L
@@ -155,7 +156,7 @@ static int heavy_malloc(long size)
{
char *p;
- p = malloc(size * TST_KB);
+ LTP_VAR_USED(p) = malloc(size * TST_KB);
if (p != NULL) {
tst_res(TINFO, "malloc %ld kB successfully", size);
free(p);
--
2.49.0
More information about the ltp
mailing list