From patchwork Tue Jul 29 16:53:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 117219 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 180ED3858D29 for ; Tue, 29 Jul 2025 16:54:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 180ED3858D29 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=Tw/tmcoj; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=Tw/tmcoj X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013037.outbound.protection.outlook.com [40.107.159.37]) by sourceware.org (Postfix) with ESMTPS id 6C8913858D1E for ; Tue, 29 Jul 2025 16:54:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6C8913858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6C8913858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.159.37 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1753808048; cv=pass; b=Y6IaNCtVwTtIHG21j6Gz8+Gbppcawdwk/rJDenMhErBmJ4UFf3OgQazrFvGdevdmEuXoOdRMTBlfamYmxEG15MqVb0xpVHuNRqMcEvFk7abvhKc+4LNGVdONQ0tza9QmLqjFSucE8E+R+dkZEMEV535b2t/kkswkr39flUz+BSE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1753808048; c=relaxed/simple; bh=sK+T3zWQZ1j9kGurqGT5IeItAh4QiHYMc70rXVWzn5s=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=LNTlEQPLLyvG6wTkOFbcmKPasfiScfCfzsHKZLMoJeWXeAsYGhCgMGHOUnOlWvlF4/ww7Rv2FD8HcVHeItHto5zBGP1BV5ZSOGGZAMxNFruEG9MViLp4FAPRdmXHq0yQWWk404YMbsv6fD2ubLUtPsH9OKJQuJwS12LQv4Pio1U= ARC-Authentication-Results: i=3; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6C8913858D1E ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=BqePUEgoeIJSI0jsp3Tmz5m22AyWFzTCKtI8fds4z8VhOFbTSPhWJSJHR3Kcq7PHXFMb1slwwnYG9wTW+LfqY+p3+uWwdp4XkAoLmu6savGknC35VO3Na+SqCPOnuicdvDvuLLPf3+IzJ5vqKsP0y/NICT0MVRvQjuwhyhz4DM4Kj4ZRLP+7f/1MBnnbVg7hiiRQj2vNF9Om7EIzu3VTX6S/DvPYiCTOkTyefrsq572OVsEfbEYc7ctv97nCph/523T0vP2S5W9pX+TGBeQs1gfybGObMOLLSFMb+4ZvtvfrH+RqHPYuk8EvMz8mJm3c4ivqUl1tBE2IyVjoUAAGEQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WqNSQIthyWQlNxpACGUUX3q6FXCHc6kvYchZnjtQDYA=; b=qKtryAyBEBezTPZI87IB/jHNVN6ylURU+7KnGm1rfBXhnhQ/u3xx0eO3vU/2/Sh+3Kr8bS1cMiEPO7jQmHt1xV80vHStaNaeNe3PT95JclyR8bgS5DS74jYb8ia6t0JUMxb5sfkAdqrXe7vpEmDvBgWDF4xgam394BvNM6Of4JwikE0MUyCYgxwfZbLWKjKIhO1at7e6TERObXTYIOxDZMOfd45Sh8v6nMcXD7YjqoEY9zRXdlxTL0vpVuQ9YoFlVVWznnv6faKDORk/ElfXhzRTjGxCLCRSAG3BGWQnuf3CGLs2CC/+I60NrivOh9Uj1dTUqINRyMC78SKWeLquDA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WqNSQIthyWQlNxpACGUUX3q6FXCHc6kvYchZnjtQDYA=; b=Tw/tmcoj0bi6QfmtDq2WfBBPOCUvhaWG9WMVCB0muDiiOt8yYUfiPJyuiL/XXlb9knH8s/flMuT63NzPFnESYj1Ku795Tp0C5/JgqiNiBiAzwOsQIzlv+9QC23jU772M2mxT/b0Q5aEHdcOAvfIBH3FhHxCeRhoaqosJaU9u3MM= Received: from DUZPR01CA0290.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b7::28) by VI1PR08MB5408.eurprd08.prod.outlook.com (2603:10a6:803:130::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.11; Tue, 29 Jul 2025 16:54:03 +0000 Received: from DU2PEPF00028D09.eurprd03.prod.outlook.com (2603:10a6:10:4b7:cafe::41) by DUZPR01CA0290.outlook.office365.com (2603:10a6:10:4b7::28) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8989.11 via Frontend Transport; Tue, 29 Jul 2025 16:54:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU2PEPF00028D09.mail.protection.outlook.com (10.167.242.169) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8989.10 via Frontend Transport; Tue, 29 Jul 2025 16:54:01 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RDQg9nHQmWPEH4rCXZQnPwjyYLjKtSqJeYBApOMPLTh86axEBX+PFLKQ85De5bZzfDqH4DMeBrUc9lUZtf47bDdMDtxP15rllQrhwMkLFf5mpNXp08FTdXV2kgJj0AfUijpJB0nHW2kKc3+U3BMM81m9XiWBHTDVa7mzYKYLCZKs9FyRdt6OCT+9NEiG0530b5idUKd0U3hjvDMLFLl8Z//EmA0m0+rwLzB8/KF1b4c/lpXlKuLfOeAXH2u3IjOaKepzokvXsxyTlEUA+0Lo4pcov8yGzdzcChEht+5EC2pFnMYMojBOSWdp8F7kJCXrKYgKM4WrEBS5qu3zQD8xhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WqNSQIthyWQlNxpACGUUX3q6FXCHc6kvYchZnjtQDYA=; b=Z7To2QkyWAW4GzvlmwOXmIAKeY/TydQth+ZnvX3QQh6aWpmrbhS9DJvOMBvDRzC8D0uPy4cMfBknZXXcOAxDblzegfLd6C4j5tRbvfFOgq8Y5IbSTPoPu0pSemXKTt9fMS0rhIlNA4Jwwa/Wicd+0N7s3YK+MMLBFQF+4GPZw7XmpIFxxUKE5UBJNBtNOcf5m+feMJpChi4F4Swm+/tGW931/0JZuwDRx5fLjqMfNicAwT/1mDoG0808dILKtCJmi7VzejiVaK0kd2viVVsS+EO2woZZsbEfqB3LDHZJsm9CgBIr7Ky0H5r8uZ7ldgTLmsnP30PYOm98RA19AmPcjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WqNSQIthyWQlNxpACGUUX3q6FXCHc6kvYchZnjtQDYA=; b=Tw/tmcoj0bi6QfmtDq2WfBBPOCUvhaWG9WMVCB0muDiiOt8yYUfiPJyuiL/XXlb9knH8s/flMuT63NzPFnESYj1Ku795Tp0C5/JgqiNiBiAzwOsQIzlv+9QC23jU772M2mxT/b0Q5aEHdcOAvfIBH3FhHxCeRhoaqosJaU9u3MM= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by AS4PR08MB7710.eurprd08.prod.outlook.com (2603:10a6:20b:511::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.27; Tue, 29 Jul 2025 16:53:28 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::b366:6358:236e:352d%6]) with mapi id 15.20.8964.024; Tue, 29 Jul 2025 16:53:28 +0000 From: Wilco Dijkstra To: glibc developers Subject: [PATCH] malloc: Change mmap chunk layout Thread-Topic: [PATCH] malloc: Change mmap chunk layout Thread-Index: AQHcAKkjLDbGqs0y90aMTA8DZ7ghag== Date: Tue, 29 Jul 2025 16:53:28 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|AS4PR08MB7710:EE_|DU2PEPF00028D09:EE_|VI1PR08MB5408:EE_ X-MS-Office365-Filtering-Correlation-Id: 747802e9-56da-4431-dca6-08ddcec084bd x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|1800799024|376014|366016|38070700018; X-Microsoft-Antispam-Message-Info-Original: =?iso-8859-1?q?gM/y5n/BFStSUU2e9?= =?iso-8859-1?q?jsilx+9Xt2SCMU8X/oNK1GiBdhh3kQp3F362IUWgIuiTGZ1QCQoL2Ua8v+AS?= =?iso-8859-1?q?kwv5/wDEQbhm5QIv3RhdkvF97gnysuOKBbR/9ReWV12G5NIGJp6WUSJlv8d3?= =?iso-8859-1?q?eipL6KyL/JY7sLzMksF5rlwgokiec+fzusmRm7wRIvP9Apw7MAwNbe8oVcED?= =?iso-8859-1?q?YUq7ZkdNpkD5ZOCnWjrWNNioPA/S3yKTxhjAfSUakn1c5BLpZPvJltx4XJ4t?= =?iso-8859-1?q?OYS3hPGg5mDKOJUVaWB7xLyTovufs+/dKoSKD0TmGitvaEKt/PqRfn7RIQx9?= =?iso-8859-1?q?opTaqwqV2Plj9H48wntHt/iIZwyWV4lUjOQZMT9iEdO4d/T9Ey6po3tR3Wdx?= =?iso-8859-1?q?GbTnvpYhgC2T3wQlTt3xu1kBDjn1rpPPmgbqDFRxqBkZ/lEVXyeUkkYlT/5S?= =?iso-8859-1?q?aUOCVpqedf8bT4yw5CvqyPi478emlpnHfq9fi+hvrOqrRistLh7kYM5Cm54/?= =?iso-8859-1?q?IYhR3fLyzdNfV/+zYlDI2OMQEXWSaAovi0VGsShWe1e/wpsGyGL5Idp0TLFr?= =?iso-8859-1?q?vWKSdLO+aE/JXo2EN0AY3E/mpcrYjEV70R62UMLQRKt61THyAfR6lKJ34fzR?= =?iso-8859-1?q?dezF9Nw0jskzWSsm7SOyXh4ejQgVBE+T1H5jH75+uQj670sgE5z+DzbtqfiA?= =?iso-8859-1?q?b5j4OOlhZSnzKNH1oUYvAVBqS8dN1ef+2/a4i0uerledEL4DUlVt4lZLclFU?= =?iso-8859-1?q?z+x1KUH9mSAhfQ7HUhRPK3418xY6NW2ahWsB9zzquAZ1OOfEpPrF0ZKkdsfy?= =?iso-8859-1?q?z4iIbdiSWYO7/uJAVH9zt7Y5HpmX7op6DjtVj5NVLmy6t5Am0C33kJoUaHVY?= =?iso-8859-1?q?1KjfuD0cHkkecryvH5dTO/v3bhN4JqXHsXnTJS0Ryu889LnDcrzcrr2r96Lk?= =?iso-8859-1?q?2xX3J8u0gbW6OfKhHYjOY6Hy8jdpuni6VB6x82hyWMlys8bxd3Qjzj9g3j3h?= =?iso-8859-1?q?dXiRnT7IdcU9H4/bJmVyY+gPxUTSF15D3qLXFJk7JKb1Bgsq5QRfdeOoVM+q?= =?iso-8859-1?q?GMaCMIgB4Ke2nluadLUTSN0n8lXR0F6KfoVfgAxaqnZvkvSQos4gWJISZ9b+?= =?iso-8859-1?q?qRFgclFs61NmvfAYeyVhRiLPG6NS1hI39YV+oUVGpADn0t4bFSebnFhGN/Vy?= =?iso-8859-1?q?+NW4ARz6OvI/etG0RQJug+9xdBVl80epNxvARDzGC9O1O3FIQbZagyql5Id3?= =?iso-8859-1?q?ZkCNbsPsL5YmsKLDerzZqbrjgenWYQEcqBvV+8ZMQaKm3wPmiCTunAHfgeOn?= =?iso-8859-1?q?s3SrUsERZD1M/rTUUn8YiIaZRG1zOdIXxlCPsXIfSbGspMOGfwoU/SsFgrEw?= =?iso-8859-1?q?59qjoTspFtl4y9ev/sOBS5qGBZDBvlERCe5Dhr8sfmxpXaG5HQt795GykJKH?= =?iso-8859-1?q?DY2ANNFob30JWyCGgvPk+EowWnGXkYY4xxc3g4AZO/T8+14hN8a+ms4hhF6C?= =?iso-8859-1?q?bmeT1wRb9yF5Jg7HsJnBH8GN3tbg3jdGvAfYg=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(376014)(366016)(38070700018); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7710 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D09.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 0eea6259-bf12-4bb7-cad0-08ddcec07100 X-Microsoft-Antispam: BCL:0; ARA:13230040|35042699022|82310400026|14060799003|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?iso-8859-1?q?UReMzwC364Sp4ckl7d5NURQsQ+?= =?iso-8859-1?q?3s7UuRHUEtxlVVsfwzaIIXTvagzoPnw56f38SrfKQgr/MQ85Z/WlldCjfAJt?= =?iso-8859-1?q?t7aHWPd8FU0wBoAvNbLf92UJ3F6cc+8egXP5Uz5zWA6zhqJp4cm/wMNoKX7m?= =?iso-8859-1?q?L1m+EWg5Ajv7OAJV+66yojv6IHBbfw+WSWgDKYz7Dec90YfUMEWtTvcPAD+I?= =?iso-8859-1?q?dvI8johTQZ0cUD4c04L+bkQRMeVIg7VUX6o4H9BLeYlaTTccck5dGLHHbO/a?= =?iso-8859-1?q?VgaWgTH7Ax9jUCeRUJK4rbRb+sCIFMGUwMXL8rGz65hFXtQxjAvNNOdELyqS?= =?iso-8859-1?q?M3noO0VCwhnjp5CYkDrlYnG6Idbp4N2iKdEW2XwwCgwr8LbYLaoeV7DR855k?= =?iso-8859-1?q?/r49gRYMYQ6i6v3bQv3BVXSFhxGw48b3T3t07sWdBJ2bFYOJDi7iClDBlO7U?= =?iso-8859-1?q?TD9wRVqD2FN9V0PjYD+xwnLoRMLkxzziK4N5T/PXhYHx6CBCR47j8Hcw3EID?= =?iso-8859-1?q?uYsayWfp+hKreSP73rsSLhR3p1Kr9SNGXl3ZF7cS3zrh4kxpLhOyO3X6zr9S?= =?iso-8859-1?q?YhSti4cZsWgYN7LZX1fIxh02xkXFjCnqWB6+yDy2rVkF0kYmhmJucqJnIp+M?= =?iso-8859-1?q?hxxo4+7EP6/stdCdvZO+9gjmH4rywKo1ILKDATVnsojlTtgiWt5W4F3RCF7M?= =?iso-8859-1?q?fT1SXJZUdtCyI59ZRUo4LxuQBZWgIKpCs4qgh/+eiPtNRw0UMD1HJSj7mLTu?= =?iso-8859-1?q?Kshl1ke2c79DLa97pA/PAOHbKjNKLWJqEHJiouSqgj7sk1FtyG13K8denD1N?= =?iso-8859-1?q?Sf/31gBUhUiLcPvKyIdOWeJB3WMmFepzhlCBhOTUWs0i9I78zQLIEGywonzz?= =?iso-8859-1?q?iOtcvo4fIE5GWlu8sMS4qaz+C6qFr6preJQ/PdpLLL+rhvJzyKDwna34BdQN?= =?iso-8859-1?q?2rl+tQmwSvfx5wivi1/Nztx0W5ZIpa6kXIJH/i4BUdM/cWZJy3R1DmY9q+dc?= =?iso-8859-1?q?PSklqP2mCycRYJuWv0d3c6QzQ6aK6RLrT6gCiWI6eyRkjsR0/DuJkOxvaCiw?= =?iso-8859-1?q?LuvmYRRlKeRXjJseK6yPEzLmvkBP0v/cHpsa7Y6KAmWDEaWibzFV38KLHH9p?= =?iso-8859-1?q?kxmhrMA2+4Q+2qwf/JKN9fbOBcOKKaYYnk98I3oynV4zVojGASPYr92UY8k2?= =?iso-8859-1?q?B8FOzQN2wFdJVgokuJ+Z8DOEUShcifhPg4hf+tIw34TpfRahWs1qViepqdl6?= =?iso-8859-1?q?LrhQ9jC8XMHBtIk6Bl0Nh8svhyjtlr2F0H8uOPKIV/l6OQnVqGWoZmJJ9qTJ?= =?iso-8859-1?q?FxweWxADBwG69PKwOgKSLzO1EAxcLB3UtQF3n3XFANmB4+ttHkqxPnfoHINB?= =?iso-8859-1?q?1CQYjne2zVXx/KIGujIMEAWMIQGbNtBnovK7Xg0zmAX7kt1dW6NY4PT05qK3?= =?iso-8859-1?q?nSD08YBGBBiQEKWgdOhf51TCCbaloTqkek2kHH2NEFWLZTMVlrO9CwOS5aDv?= =?iso-8859-1?q?539ErnHBSxsmAUtkEU4zcNNYq0KZsnB3YOGcv+JOQn/bu9C0UD+2sCGOb9Iw?= =?iso-8859-1?q?GKZt/0Eu5H?= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(35042699022)(82310400026)(14060799003)(1800799024)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jul 2025 16:54:01.2042 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 747802e9-56da-4431-dca6-08ddcec084bd X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028D09.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB5408 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.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 Change the mmap chunk layout to be identical to a normal chunk. This makes it safe for tcache to hold mmap chunks and simplifies size calculations in memsize and musable. Add mmap_base() and mmap_size() macros to simplify code. Passes regress, OK for commit? diff --git a/malloc/malloc-check.c b/malloc/malloc-check.c index f5ca5fb41ca03dddc21bf92c78d8a34d1cb496d5..8d6890bf09abf4201c2254a68e5a03d42b615747 100644 --- a/malloc/malloc-check.c +++ b/malloc/malloc-check.c @@ -151,8 +151,8 @@ mem2chunk_check (void *mem, unsigned char **magic_p) offset != 0x200 && offset != 0x400 && offset != 0x800 && offset != 0x1000 && offset < 0x2000) || !chunk_is_mmapped (p) || prev_inuse (p) || - ((((unsigned long) p - prev_size (p)) & page_mask) != 0) || - ((prev_size (p) + sz) & page_mask) != 0) + ((((uintptr_t) mmap_base (p)) & page_mask) != 0) || + (mmap_size (p) & page_mask) != 0) return NULL; for (sz = CHUNK_HDR_SZ + memsize (p) - 1; @@ -273,7 +273,6 @@ realloc_check (void *oldmem, size_t bytes) __libc_lock_unlock (main_arena.mutex); if (!oldp) malloc_printerr ("realloc(): invalid pointer"); - const INTERNAL_SIZE_T oldsize = chunksize (oldp); chnb = checked_request2size (rb); if (chnb == 0) @@ -293,8 +292,8 @@ realloc_check (void *oldmem, size_t bytes) else #endif { - /* Note the extra SIZE_SZ overhead. */ - if (oldsize - SIZE_SZ >= chnb) + size_t oldsize = memsize (oldp); + if (oldsize >= rb) newmem = oldmem; /* do nothing */ else { @@ -303,7 +302,7 @@ realloc_check (void *oldmem, size_t bytes) newmem = _int_malloc (&main_arena, rb); if (newmem) { - memcpy (newmem, oldmem, oldsize - CHUNK_HDR_SZ); + memcpy (newmem, oldmem, oldsize); munmap_chunk (oldp); } } @@ -312,7 +311,7 @@ realloc_check (void *oldmem, size_t bytes) else { top_check (); - newmem = _int_realloc (&main_arena, oldp, oldsize, chnb); + newmem = _int_realloc (&main_arena, oldp, chunksize (oldp), chnb); } DIAG_PUSH_NEEDS_COMMENT; diff --git a/malloc/malloc.c b/malloc/malloc.c index ee4ea71d7323bf54da708c9af5fb7d2bcc2a33b5..5d915d72fdb6e0c48ef42b8fcc1b44c9b4154c63 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -1412,6 +1412,10 @@ checked_request2size (size_t req) __nonnull (1) /* Ptr to previous physical malloc_chunk. Only valid if !prev_inuse (P). */ #define prev_chunk(p) ((mchunkptr) (((char *) (p)) - prev_size (p))) +/* Return mmap base pointer/size of a chunk with IS_MMAPPED set. */ +#define mmap_base(p) ((void*)(((char *) (p)) - prev_size (p))) +#define mmap_size(p) (prev_size (p) + chunksize (p) + CHUNK_HDR_SZ) + /* Treat space at ptr + offset as a chunk */ #define chunk_at_offset(p, s) ((mchunkptr) (((char *) (p)) + (s))) @@ -1455,7 +1459,7 @@ checked_request2size (size_t req) __nonnull (1) #define memsize(p) \ (__MTAG_GRANULE_SIZE > SIZE_SZ && __glibc_unlikely (mtag_enabled) ? \ chunksize (p) - CHUNK_HDR_SZ : \ - chunksize (p) - CHUNK_HDR_SZ + (chunk_is_mmapped (p) ? 0 : SIZE_SZ)) + chunksize (p) - CHUNK_HDR_SZ + SIZE_SZ) /* If memory tagging is enabled the layout changes to accommodate the granule size, this is wasteful for small allocations so not done by default. @@ -2106,7 +2110,7 @@ do_check_chunk (mstate av, mchunkptr p) assert (((char *) p) < min_address || ((char *) p) >= max_address); } /* chunk is page-aligned */ - assert (((prev_size (p) + sz) & (GLRO (dl_pagesize) - 1)) == 0); + assert ((mmap_size (p) & (GLRO (dl_pagesize) - 1)) == 0); /* mem is aligned */ assert (!misaligned_chunk (p)); } @@ -2418,16 +2422,15 @@ sysmalloc_mmap (INTERNAL_SIZE_T nb, size_t pagesize, int extra_flags, mstate av) /* Round up size to nearest page. For mmapped chunks, the overhead is one - SIZE_SZ unit larger than for normal chunks, because there is no - following chunk whose prev_size field could be used. + CHUNK_HDR_SZ unit larger than for normal chunks. See the front_misalign handling below, for glibc there is no need for further alignments unless we have have high alignment. */ if (MALLOC_ALIGNMENT == CHUNK_HDR_SZ) - size = ALIGN_UP (nb + SIZE_SZ, pagesize); + size = ALIGN_UP (nb + CHUNK_HDR_SZ, pagesize); else - size = ALIGN_UP (nb + SIZE_SZ + MALLOC_ALIGN_MASK, pagesize); + size = ALIGN_UP (nb + CHUNK_HDR_SZ + MALLOC_ALIGN_MASK, pagesize); /* Don't try if size wraps around 0. */ if ((unsigned long) (size) <= (unsigned long) (nb)) @@ -2473,13 +2476,13 @@ sysmalloc_mmap (INTERNAL_SIZE_T nb, size_t pagesize, int extra_flags, mstate av) ptrdiff_t correction = MALLOC_ALIGNMENT - front_misalign; p = (mchunkptr) (mm + correction); set_prev_size (p, correction); - set_head (p, (size - correction) | IS_MMAPPED); + set_head (p, (size - correction - CHUNK_HDR_SZ) | IS_MMAPPED); } else { p = (mchunkptr) mm; set_prev_size (p, 0); - set_head (p, size | IS_MMAPPED); + set_head (p, (size - CHUNK_HDR_SZ) | IS_MMAPPED); } /* update statistics */ @@ -3038,13 +3041,12 @@ static void munmap_chunk (mchunkptr p) { size_t pagesize = GLRO (dl_pagesize); - INTERNAL_SIZE_T size = chunksize (p); assert (chunk_is_mmapped (p)); uintptr_t mem = (uintptr_t) chunk2mem (p); - uintptr_t block = (uintptr_t) p - prev_size (p); - size_t total_size = prev_size (p) + size; + uintptr_t block = (uintptr_t) mmap_base (p); + size_t total_size = mmap_size (p); /* Unfortunately we have to do the compilers job by hand here. Normally we would test BLOCK and TOTAL-SIZE separately for compliance with the page size. But gcc does not recognize the optimization possibility @@ -3075,15 +3077,15 @@ mremap_chunk (mchunkptr p, size_t new_size) assert (chunk_is_mmapped (p)); - uintptr_t block = (uintptr_t) p - offset; + uintptr_t block = (uintptr_t) mmap_base (p); uintptr_t mem = (uintptr_t) chunk2mem(p); - size_t total_size = offset + size; + size_t total_size = mmap_size (p); if (__glibc_unlikely ((block | total_size) & (pagesize - 1)) != 0 || __glibc_unlikely (!powerof2 (mem & (pagesize - 1)))) malloc_printerr("mremap_chunk(): invalid pointer"); - /* Note the extra SIZE_SZ overhead as in mmap_chunk(). */ - new_size = ALIGN_UP (new_size + offset + SIZE_SZ, pagesize); + /* Note the extra CHUNK_HDR_SZ overhead as in mmap_chunk(). */ + new_size = ALIGN_UP (new_size + offset + CHUNK_HDR_SZ, pagesize); /* No need to remap if the number of pages does not change. */ if (total_size == new_size) @@ -3102,7 +3104,7 @@ mremap_chunk (mchunkptr p, size_t new_size) assert (!misaligned_chunk (p)); assert (prev_size (p) == offset); - set_head (p, (new_size - offset) | IS_MMAPPED); + set_head (p, (new_size - offset - CHUNK_HDR_SZ) | IS_MMAPPED); INTERNAL_SIZE_T new; new = atomic_fetch_add_relaxed (&mp_.mmapped_mem, new_size - size - offset) @@ -3388,11 +3390,6 @@ tcache_init (void) if (tcache_shutting_down) return; - /* Check minimum mmap chunk is larger than max tcache size. This means - mmap chunks with their different layout are never added to tcache. */ - if (MAX_TCACHE_SMALL_SIZE >= GLRO (dl_pagesize) / 2) - malloc_printerr ("max tcache size too large"); - size_t bytes = sizeof (tcache_perthread_struct); tcache = (tcache_perthread_struct *) __libc_malloc2 (bytes); @@ -3547,7 +3544,6 @@ __libc_free (void *mem) { tc_idx = large_csize2tidx (size); if (size >= MINSIZE - && !chunk_is_mmapped (p) && __glibc_likely (tcache->num_slots[tc_idx] != 0)) return tcache_put_large (p, tc_idx); } @@ -5342,7 +5338,7 @@ musable (void *mem) mchunkptr p = mem2chunk (mem); if (chunk_is_mmapped (p)) - return chunksize (p) - CHUNK_HDR_SZ; + return memsize (p); else if (inuse (p)) return memsize (p);