From patchwork Mon Dec 1 17:05:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 801 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=1764608964; bh=7Mztku74IvkC0DxDv8l1bW2wLTxqfS07kwFk/v0cbug=; 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=IZDWpr56/a567g9JpNvDr4CvMi+t4u2Epd4l4pcQE40SXWqzxkZIBJqyitFthgc4x 1sdWBiSpqiLrENlQ/LR52wr/Hu7WTI/vG21I+5aTMUnFKwCNyzytoPWoMzGKLoToNo PtukFI6KreN6ypAaKmMkCReb2Bj99ECNAPKV+NQzykr1VnAzrfd66bOKxWiv8qIpmh MAE25swpIANojNwoZ3dEHTQgvENf89zztmJzgL1IxYp4HSgXv8V1E57g1QucnDMMFP uEWnROJEgkCTAI7zh9EF7ZwLblwBJGpp4EHQcoysV/hUVsNHu9u2sMU0xTTokwqocR WWtUQudx865+Q== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 16E76688A4 for ; Mon, 1 Dec 2025 10:09:24 -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 UWj5Cjo17PrM for ; Mon, 1 Dec 2025 10:09:24 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608963; bh=7Mztku74IvkC0DxDv8l1bW2wLTxqfS07kwFk/v0cbug=; 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=G3FbE7pMTU+SM0UauBP74H5mt6EXPzIY56B6UPpoKQaznfmKW6AkmZe8Ij+ck5na6 eikbd3P9i32QOPfFLGrI839xjK9PmOqFleJv6dObfoUjue5e2Z2j4/jgwnNk2iQRbB Soqa44oKnGzvydAJ3I6/mIV9Ui/LT5bz2GYttHFMUKLKzrtHWdp1FC1dC+JJMVaYAj nioK9yfRJ86+NKPUBUSDwtMRyFMNeK0KcZ7hLqTfxnRQrQDE9gltg06vyCsBgh3h+X b+/Y40Tm2upI8sL8FHbnOXmMlu3Av2qHOQHW5Pc2NAMn1aU5FZ/EdfKy5saEJ7CZDM Ex3CqVMeAL1bg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 0E2F9688DF for ; Mon, 1 Dec 2025 10:09:23 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608959; bh=MdPu0J/5Y0P+KuWhWbeKwdVZ6gk8RSDnaQ3K1vLRpxE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QYHfTt74YsuhRS14Cp4MJLBTCkQP23YEr9XR4NnAiIXWGSBQmmsDrO92iscmh8N/M +Jj3ogN1pZSy/IcyQpRug6fR/1ut0C2kWxtzNawmsSLC3qkcgWEpMWU4EexVsPhLhq SBWjy7gzTf5DG4w7bv+mFqMMeUNYj6zWWOFMJCb1mex17VXXtVRis+Dvg5iFYIXBVK OqLn3zNJ3DTXLgvOfJe8Yq3BVARgZYLoOJfk8quw7SOpVBX1gfo/8U39/7hakQV/Lh hrSeO3NsxA1teg4ulqSK/8smsqQMN/vaKgLjzxU1w49UcLePX/U86eV7bkXkvjKSvJ bdttuyATMtqJQ== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id A38E75E439; Mon, 1 Dec 2025 10:09:19 -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 iQR6o6P7kmfO; Mon, 1 Dec 2025 10:09:19 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1764608958; bh=IkHVZ+WggIZ1Qd5F0RYwUSwdK6Muz1N6UcSmWhEHXZY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cAS9wMIOmsAdJe1iwt0v2HpEIDei8KpqrNV119n2sVdGTVUM85dJtePBXTBzgcu8f 0wFcIWrz4V//NkHHghfSZM2wpPSwwcGrY/axFj/BAfxDfQBeRZmYbZvrQ9vlO7N0Sa aEmffLMh2tmHBUzYb6IbgNnLWj9LNarc7tItioMhA0InJ5m6LHexEaxvlYo53Ta1UW r74MyDTi7O8Ae/7x0spVbLhM9E3MMXh9YdTT70NCV/JfLUdk/Jur3AYygEmgwGznbP 8Rpy0ThgHBVt9+fH9lBibi1loV9cIxKbsCEqezoOUVYbLZTSuhKrtoQPY8i4RevZhr 3X71/6WtA/oXg== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 5403668821; Mon, 1 Dec 2025 10:09:18 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Mon, 1 Dec 2025 10:05:05 -0700 Message-ID: <20251201170529.3237986-27-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: 4U46YW3ZC5ACY5Q4NZKQ3FGOKHJ4NZ4E X-Message-ID-Hash: 4U46YW3ZC5ACY5Q4NZKQ3FGOKHJ4NZ4E 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 26/37] mcheck: add pedantic mode support 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 mcheck_pedantic_prehook() calls to dlmalloc, dlrealloc, dlmemalign, and dlcalloc wrapper functions. Also add the mcheck_pedantic() and mcheck_check_all() API functions. The pedantic mode is runtime controlled, so the registry hooks are called on every allocation operation. Changes from original commit: - Uses dl* function names instead of mALLOc style names Signed-off-by: Eugene Uriev Co-developed-by: Claude Signed-off-by: Simon Glass (cherry picked from commit 18c1bfafe0ccdd3229d91bbb07ed942e9f233f93) --- common/dlmalloc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/common/dlmalloc.c b/common/dlmalloc.c index c9eb18787e8..4ee7c6c133f 100644 --- a/common/dlmalloc.c +++ b/common/dlmalloc.c @@ -5596,6 +5596,7 @@ size_t dlmalloc_usable_size(const void* mem) { void *dlmalloc(size_t bytes) { + mcheck_pedantic_prehook(); size_t fullsz = mcheck_alloc_prehook(bytes); void *p = dlmalloc_impl(fullsz); @@ -5608,6 +5609,7 @@ void dlfree(void *mem) { dlfree_impl(mcheck_free_prehook(mem)); } void *dlrealloc(void *oldmem, size_t bytes) { + mcheck_pedantic_prehook(); if (bytes == 0) { if (oldmem) dlfree(oldmem); @@ -5628,6 +5630,7 @@ void *dlrealloc(void *oldmem, size_t bytes) void *dlmemalign(size_t alignment, size_t bytes) { + mcheck_pedantic_prehook(); size_t fullsz = mcheck_memalign_prehook(alignment, bytes); void *p = dlmemalign_impl(alignment, fullsz); @@ -5640,6 +5643,7 @@ void *dlmemalign(size_t alignment, size_t bytes) void *dlcalloc(size_t n, size_t elem_size) { + mcheck_pedantic_prehook(); /* NB: no overflow check here */ size_t fullsz = mcheck_alloc_prehook(n * elem_size); void *p = dlcalloc_impl(1, fullsz); @@ -5650,12 +5654,20 @@ void *dlcalloc(size_t n, size_t elem_size) } /* mcheck API */ +int mcheck_pedantic(mcheck_abortfunc_t f) +{ + mcheck_initialize(f, 1); + return 0; +} + int mcheck(mcheck_abortfunc_t f) { mcheck_initialize(f, 0); return 0; } +void mcheck_check_all(void) { mcheck_pedantic_check(); } + enum mcheck_status mprobe(void *__ptr) { return mcheck_mprobe(__ptr); } #endif /* MCHECK_HEAP_PROTECTION */