[PATCH 4/4] malloc: Fix sbrk clearing memory after freeing it instead of before

Sean Anderson seanga2 at gmail.com
Mon May 3 04:55:16 CEST 2021


This fixes memory being cleared after releasing it. Instead, clear memory
before releasing it. In addition, suppress valgrind warnings about writing
to free'd memory.

Signed-off-by: Sean Anderson <seanga2 at gmail.com>
---

 common/dlmalloc.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index 05c8fd87e7..ea51bdf6a6 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -592,11 +592,13 @@ void *sbrk(ptrdiff_t increment)
 	ulong new = old + increment;
 
 	/*
-	 * if we are giving memory back make sure we clear it out since
-	 * we set MORECORE_CLEARS to 1
+	 * if we are allocating memory make sure we clear it out since we set
+	 * MORECORE_CLEARS to 1
 	 */
-	if (increment < 0)
-		memset((void *)new, 0, -increment);
+	if (increment > 0) {
+		VALGRIND_MAKE_MEM_UNDEFINED(old, increment);
+		memset((void *)old, 0, increment);
+	}
 
 	if ((new < mem_malloc_start) || (new > mem_malloc_end))
 		return (void *)MORECORE_FAILURE;
-- 
2.31.0



More information about the U-Boot mailing list