From patchwork Tue Mar 31 08:26:31 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rocket Ma X-Patchwork-Id: 132481 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 9CEEB4BB58CA for ; Tue, 31 Mar 2026 08:27:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9CEEB4BB58CA Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=WN8a7uGP X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-dl1-x122c.google.com (mail-dl1-x122c.google.com [IPv6:2607:f8b0:4864:20::122c]) by sourceware.org (Postfix) with ESMTPS id 2002F4BA2E0A for ; Tue, 31 Mar 2026 08:26:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2002F4BA2E0A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2002F4BA2E0A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::122c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774945605; cv=none; b=gAsYCS2KJHfVziGds5ECOMjCBNzTi6+GapDu3pLmaQzEEBfpNDKmNeopVVRUpt3efmCoXURAI79+ZW8A3u+mj4KWfWEkkvPrHq+VoBLFIkFSp4XJ8H/aHv7D2Rea5RKJ+3aWDYKi2BjbPPQOgRjdvbiJpjCBfbes3rX4feCUvsY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774945605; c=relaxed/simple; bh=U5UwTeGeSmpzpO+nPiRhRfSMYfmjSDhqhCFCn+3IOMY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=rCH3eDZNVuH1fTkgkcW7W+IAg4dniuOWbD33tppFxtfWsCnLXu2zS+gAO5TzuQBzEjb5fgBNDpVkjiSFtoYh+zz7BSCGTGOAg0phGCISRKiQmPGNK8yyzdQjx/mwlxZibVuL5q3S2LBckfPMZb5JJZyuuoaTJ+gWBh7Oi7V9BHQ= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2002F4BA2E0A Received: by mail-dl1-x122c.google.com with SMTP id a92af1059eb24-12a693cdf29so4844946c88.0 for ; Tue, 31 Mar 2026 01:26:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774945603; x=1775550403; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=MIQGyQ4BvrJsXVhkpaeKjZfRTTjm+3w2OIfhMmvMsf8=; b=WN8a7uGPlaDxLZ1tKZnLB29GkPvKBh71P35lAOKPWpxaSuzftSloocgn1TldI6g+2+ zr5Shr8mZ10pRzXiHXg7cw9HPHWTWxc/r9E6bllPhFcxjqC49o+F571W4FeZDRttki2f 1I5D+QqwBn/yIG4yZUI+BBlkvKAIE+M1FId9VOsJG6NM8b3j/vfxMuV8m6oeLFDxLxWH WbaMhtEfpxMo5T8Q0awSOTb1eZKaoMSpjiNI7vfj3ovMkz0SOiW7MieK368mTnU8JqLF eG/tt/ezNZi551hQDYArIokpgvSZE5ggQanQSlE9vF7Le1dD5TlyPQIBg53vJbIa4HFu 0tKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774945603; x=1775550403; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MIQGyQ4BvrJsXVhkpaeKjZfRTTjm+3w2OIfhMmvMsf8=; b=lEhQB0/fA0JBluc4x/hDOnQHhy3xqcHkZL6i6vKljV2+kPu6aPCFZUEcnQQDs9nMid 72wF/IXIiNScYa4l9B+icE4pa/g5sZi4tnwDxgp1fQAU5Chh12x++e8KJO6jDZnCIcbM F3Uqf8Qxo+vdy4Thvk45qXu6hzfRyxDK0g4FPcSpEv543PDnQt0ZbgwJlo9sKoeMq+Am PA3f7lWfXnHC/jHIFKCzeHHLKw9PaCCNxCYYC5R5ZFWaYaZOqhW8PkEooqO20Tt3BbVI XUGsQ9zjolcXZdjXn3EcSvJs6agUe0Y7VQ86EW4WailEX4NeCBkrXQHs03pmhNfHR6nT p82A== X-Gm-Message-State: AOJu0YxJrSX87X0sKnRQGObuiGoXOsPb5WMuISjUX3G8uXBrP3qyQOZs IdYifCxtGW1vteVby6t0GJHOJIjnzI99dFDV5HlglZBCANXO4uCOLIf4jgGORA== X-Gm-Gg: ATEYQzw3hNbPzRPnsdTA7/Sb1N+A/0uE4z9Nmv81x+BcdOiqQYofu/Iwx+axZfpiBb4 W+joys3mBneYsJ2wP6/26vbj3vUiXxej0At2LRe0Rd7+4HD1h9Yg2vnCIO7FeIbuIrioSYBkwcZ kiM/qPPnA93mhDD1IB7y6HHc9VraSIYDEQePeuaF0mXNPK3paT0RZG5h/Y52ZbznacW8g9E2xlz FNrl+u2shdW7BKUjkEKWDxSlF4Symr98y/2ozdQ9WxSIliFKAwCKaT+uoFuS1vFqNDnA+xKA1op 5mdCR08lsMChDwl4hSjoPV4I41Jp24TJXfodT/gsooDZRoBRe7amvnMeuBy366hG1pf5SiCHUJG HUtL4zw/G5igqrKHxa+/MUPk7I6Exrs7Dh8HHvEO+MeTDObEkdg5fWvNlIGFsSfK/9PgCIPYz8T xb/WVT8OhpZjB5z/yxTQqvgO0QUtaBmE7qQg5K+ee4CwaU8eGMU9sA++TOJqWimId/VQf0BdUrK dgB7y2X X-Received: by 2002:a05:7300:f194:b0:2c5:fb3f:70c3 with SMTP id 5a478bee46e88-2c7bcc4c525mr1240576eec.15.1774945603066; Tue, 31 Mar 2026 01:26:43 -0700 (PDT) Received: from localhost ([23.94.240.252]) by smtp.gmail.com with UTF8SMTPSA id 5a478bee46e88-2c3c68b272esm9368280eec.15.2026.03.31.01.26.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Mar 2026 01:26:42 -0700 (PDT) From: Rocket Ma To: libc-alpha@sourceware.org Cc: Wilco Dijkstra Subject: [PATCH] malloc: free original oldmem with tcache in realloc Date: Tue, 31 Mar 2026 01:26:31 -0700 Message-ID: <20260331082631.217802-1-marocketbd@gmail.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org This patch reintroduced tcache support in realloc. In commit cd335350, all chunks released in realloc is directly put into bins for performance. For remainder ones, it's OK, since user never allocate these manually; though if the chunk grows instead of shrinks, the chunk to free is allocated by user some time ago. These chunks requested by user should be put in tcache if available. Signed-off-by: Rocket Ma --- malloc/malloc.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/malloc/malloc.c b/malloc/malloc.c index 6455a1b0e0..503e981271 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -3471,8 +3471,7 @@ __libc_realloc (void *oldmem, size_t bytes) { size_t sz = memsize (oldp); memcpy (newp, oldmem, sz); - (void) tag_region (chunk2mem (oldp), sz); - _int_free_chunk (ar_ptr, oldp, chunksize (oldp), 0); + __libc_free (oldmem); } } @@ -4549,7 +4548,7 @@ _int_realloc (mstate av, mchunkptr oldp, INTERNAL_SIZE_T oldsize, (void) tag_region (oldmem, sz); newmem = tag_new_usable (newmem); memcpy (newmem, oldmem, sz); - _int_free_chunk (av, oldp, chunksize (oldp), 1); + __libc_free (oldmem); check_inuse_chunk (av, newp); return newmem; }