From patchwork Mon Dec 1 17:05:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 797 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608954; bh=TLg6OxpCW/e0twV4/ttc+l0N/2EVu6h7pXYpwXQQb6c=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=CKczbJSwJ8kCr+vJP1mjESqlepQ9caZ3DD5DIWNvO2RFq8eiFm1kyiYuPo2la6cF9 IddBHiTdEP4lQDmNB1pzw82+LoOf5yij4P5wFPZLx6M/V5Df9RnT+Fkx9m5XTlXrQQ bmAOJ7eYSJs7opezA/D1y7u4FDARdwSn/+mq2DEtexEh87dMGHXXRq8YRMSM4TyzMG w2NgDazG1U32itr2rJNnqzv8WxoxUppi8vyo6I679673Ix0LLbhc4pKPvuUNEJqQ5s H0vN21CBNUxDLR3Oawnt2ruRibya7zT2Uix9z4BmmdxACBSfJd+i2c50ABc9y8qb2u 4E/8y6cCr8DHw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E0F26688C5 for ; Mon, 1 Dec 2025 10:09:14 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id KBZ5RDEzcg3g for ; Mon, 1 Dec 2025 10:09:14 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608954; bh=TLg6OxpCW/e0twV4/ttc+l0N/2EVu6h7pXYpwXQQb6c=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=CKczbJSwJ8kCr+vJP1mjESqlepQ9caZ3DD5DIWNvO2RFq8eiFm1kyiYuPo2la6cF9 IddBHiTdEP4lQDmNB1pzw82+LoOf5yij4P5wFPZLx6M/V5Df9RnT+Fkx9m5XTlXrQQ bmAOJ7eYSJs7opezA/D1y7u4FDARdwSn/+mq2DEtexEh87dMGHXXRq8YRMSM4TyzMG w2NgDazG1U32itr2rJNnqzv8WxoxUppi8vyo6I679673Ix0LLbhc4pKPvuUNEJqQ5s H0vN21CBNUxDLR3Oawnt2ruRibya7zT2Uix9z4BmmdxACBSfJd+i2c50ABc9y8qb2u 4E/8y6cCr8DHw== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D1658688AE for ; Mon, 1 Dec 2025 10:09:14 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608952; bh=zQMzsKXAPVHjHnF83W4n/migH+i85hLFoi7HE5LQXD0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E/9rCWALQYQZa3Zxtv9Bu184lgS7VvF6u/whzgXhz3XFMb0dmvAF8XYNKMtsGJdtR Zx4GixTPGKBJoIH4P0VsvSBr4mJ8O8NPtmdQV7gEo6yl0LmM0z+a0HSxg8F8MrQwjs CxoU5XBnQUlk1+TMdYmcZ+KGOTxt4JU/HhzeEz1mIvxcsmKQ48kSnMhHQSMDsvOr7/ aOVt8gkGyPKnCu/kpdhYNbuwKdtUbxHwRr2DslB691tK7h1ZJ0hxjNk0qRWkox7mFk kIWX5F3lOVbdAzajROH4/OpbIsBy837l+Sl7Jp7ZkQUySgnJiJ1SkQg5Q7Em9YkvnW 5uIUJWGsU4h7A== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D6706688B6; Mon, 1 Dec 2025 10:09:12 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id CaLuHVTDSdpS; Mon, 1 Dec 2025 10:09:12 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608947; bh=ImhoZbX42cEFK5qrDhXRRq8KancseLLwY/vLoRAWvXg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p0i4nY6XsTU4mE9A7wu5AhmoICBg9xNWFCfB3mLhVCqRLNL/alC+mvOBHjnQInjYo zM0+NGKQ+MYfWlhSL2Sjo3vanQ/6cBCz1TMDO7japRhqEtXJ4YNVGDkBNd9eP9vXqb lr4yK9FNzT3xGOWRXtbmH0mAQ+FhujKZrLxN56gip9plZLLmkGZRX1xWClHaPxVYcn /INBvkjld/SS24Hr+7rrKm1BxJ33u3AiHLo2EoKubEfJ+q8UTXumWXZ7k2WmNyrxGm RoodUEBpX6clOftIfZ2j7OndlrSfghRzlQ2GzE3o1oOBdjvAls9QnwjuyH1wn7paHx IQKf8sZJl6Ubg== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 15D3A688A4; Mon, 1 Dec 2025 10:09:07 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Mon, 1 Dec 2025 10:05:01 -0700 Message-ID: <20251201170529.3237986-23-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251201170529.3237986-1-sjg@u-boot.org> References: <20251201170529.3237986-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: E7XCXPQLNPBC4JWTJPNUBJSBWEFUJGMJ X-Message-ID-Hash: E7XCXPQLNPBC4JWTJPNUBJSBWEFUJGMJ X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt , Simon Glass , Eugene Uriev , Claude X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 22/37] mcheck: prepare +1 tier for mcheck-wrappers, in dl-*alloc commands List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass Add STATIC_IF_MCHECK macro and rename the main allocation functions to *_impl versions (dlmalloc_impl, dlfree_impl, dlrealloc_impl, dlmemalign_impl, dlcalloc_impl) to prepare for mcheck wrappers. When MCHECK_HEAP_PROTECTION is not defined, the *_impl macros map directly to the original function names, so behavior is unchanged. Changes from original commit: - Adapted to new dlmalloc 2.8.6 function names (dl* vs mALLOc, etc.) - Updated all internal calls to use *_impl versions Signed-off-by: Eugene Uriev Co-developed-by: Claude Signed-off-by: Simon Glass (cherry picked from commit c82ff481159d2cf7e637c709df84883e09bba588) --- common/dlmalloc.c | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/common/dlmalloc.c b/common/dlmalloc.c index 03fd902c9f6..972cadd2e2f 100644 --- a/common/dlmalloc.c +++ b/common/dlmalloc.c @@ -557,6 +557,17 @@ MAX_RELEASE_CHECK_RATE default: 4095 unless not HAVE_MMAP #define DEBUG 1 #endif +#ifdef MCHECK_HEAP_PROTECTION +#define STATIC_IF_MCHECK static +#else +#define STATIC_IF_MCHECK +#define dlmalloc_impl dlmalloc +#define dlfree_impl dlfree +#define dlrealloc_impl dlrealloc +#define dlmemalign_impl dlmemalign +#define dlcalloc_impl dlcalloc +#endif + #define LACKS_FCNTL_H #define LACKS_UNISTD_H #define LACKS_SYS_PARAM_H @@ -4607,7 +4618,8 @@ static void* tmalloc_small(mstate m, size_t nb) { #if !ONLY_MSPACES -void* dlmalloc(size_t bytes) { +STATIC_IF_MCHECK +void* dlmalloc_impl(size_t bytes) { #ifdef __UBOOT__ #if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) @@ -4764,7 +4776,8 @@ void* dlmalloc(size_t bytes) { /* ---------------------------- free --------------------------- */ -void dlfree(void* mem) { +STATIC_IF_MCHECK +void dlfree_impl(void* mem) { #ifdef __UBOOT__ #if CONFIG_IS_ENABLED(SYS_MALLOC_F) /* free() is a no-op - all the memory will be freed on relocation */ @@ -4885,7 +4898,8 @@ void dlfree(void* mem) { #endif /* FOOTERS */ } -void* dlcalloc(size_t n_elements, size_t elem_size) { +STATIC_IF_MCHECK +void* dlcalloc_impl(size_t n_elements, size_t elem_size) { void* mem; size_t req = 0; if (n_elements != 0) { @@ -4894,7 +4908,7 @@ void* dlcalloc(size_t n_elements, size_t elem_size) { (req / n_elements != elem_size)) req = MAX_SIZE_T; /* force downstream failure on overflow */ } - mem = dlmalloc(req); + mem = dlmalloc_impl(req); #ifdef __UBOOT__ #if CONFIG_IS_ENABLED(SYS_MALLOC_F) /* For pre-reloc simple malloc, just zero the memory directly */ @@ -5328,7 +5342,8 @@ static void internal_inspect_all(mstate m, #if !ONLY_MSPACES -void* dlrealloc(void* oldmem, size_t bytes) { +STATIC_IF_MCHECK +void* dlrealloc_impl(void* oldmem, size_t bytes) { #ifdef __UBOOT__ #if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) { @@ -5343,14 +5358,14 @@ void* dlrealloc(void* oldmem, size_t bytes) { #endif void* mem = 0; if (oldmem == 0) { - mem = dlmalloc(bytes); + mem = dlmalloc_impl(bytes); } else if (bytes >= MAX_REQUEST) { MALLOC_FAILURE_ACTION; } #ifdef REALLOC_ZERO_BYTES_FREES else if (bytes == 0) { - dlfree(oldmem); + dlfree_impl(oldmem); } #endif /* REALLOC_ZERO_BYTES_FREES */ else { @@ -5433,7 +5448,8 @@ void* dlrealloc_in_place(void* oldmem, size_t bytes) { return mem; } -void* dlmemalign(size_t alignment, size_t bytes) { +STATIC_IF_MCHECK +void* dlmemalign_impl(size_t alignment, size_t bytes) { #ifdef __UBOOT__ #if CONFIG_IS_ENABLED(SYS_MALLOC_F) if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) @@ -5441,7 +5457,7 @@ void* dlmemalign(size_t alignment, size_t bytes) { #endif #endif if (alignment <= MALLOC_ALIGNMENT) { - return dlmalloc(bytes); + return dlmalloc_impl(bytes); } return internal_memalign(gm, alignment, bytes); } @@ -5449,7 +5465,7 @@ void* dlmemalign(size_t alignment, size_t bytes) { int dlposix_memalign(void** pp, size_t alignment, size_t bytes) { void* mem = 0; if (alignment == MALLOC_ALIGNMENT) - mem = dlmalloc(bytes); + mem = dlmalloc_impl(bytes); else { size_t d = alignment / sizeof(void*); size_t r = alignment % sizeof(void*); @@ -5473,14 +5489,14 @@ void* dlvalloc(size_t bytes) { size_t pagesz; ensure_initialization(); pagesz = mparams.page_size; - return dlmemalign(pagesz, bytes); + return dlmemalign_impl(pagesz, bytes); } void* dlpvalloc(size_t bytes) { size_t pagesz; ensure_initialization(); pagesz = mparams.page_size; - return dlmemalign(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); + return dlmemalign_impl(pagesz, (bytes + pagesz - SIZE_T_ONE) & ~(pagesz - SIZE_T_ONE)); } void** dlindependent_calloc(size_t n_elements, size_t elem_size,