From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99C99CEACEE for ; Tue, 1 Oct 2024 18:26:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2AC482800D1; Tue, 1 Oct 2024 14:26:25 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 23686280068; Tue, 1 Oct 2024 14:26:25 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 061572800D1; Tue, 1 Oct 2024 14:26:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DAED3280068 for ; Tue, 1 Oct 2024 14:26:24 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 62D1B41797 for ; Tue, 1 Oct 2024 18:26:24 +0000 (UTC) X-FDA: 82625863488.29.3F5FF27 Received: from GBR01-CWX-obe.outbound.protection.outlook.com (mail-cwxgbr01on2139.outbound.protection.outlook.com [40.107.121.139]) by imf12.hostedemail.com (Postfix) with ESMTP id 9280D40007 for ; Tue, 1 Oct 2024 18:26:21 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=garyguo.net header.s=selector1 header.b=as+1wxMc; dmarc=none; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf12.hostedemail.com: domain of gary@garyguo.net designates 40.107.121.139 as permitted sender) smtp.mailfrom=gary@garyguo.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1727807161; a=rsa-sha256; cv=pass; b=qFBsst0CiSnrDoddgPxyqS0+llRKLf+YPrs7V4kGmqJHpyf0yP9Znsw3NuBP2opD4fnxKB 4tjB0ADYJ6p7Hc8DR6EitwfdO7Jm78nF+DZKJukFQcij57cUA3KMenLMdt8OylYojiFXn+ eTUQHCdIfloUuts6hXk44ED+GEM4xNA= ARC-Authentication-Results: i=2; imf12.hostedemail.com; dkim=pass header.d=garyguo.net header.s=selector1 header.b=as+1wxMc; dmarc=none; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf12.hostedemail.com: domain of gary@garyguo.net designates 40.107.121.139 as permitted sender) smtp.mailfrom=gary@garyguo.net ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727807161; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xSHeQOq6jF97iT+jogQsm+QbOZF5ggB5PghQrqy60fk=; b=gPPZASJGMY7GlUdQFrIHg7TuJVRRo8/ZzIVzr2+8oKweujrYGixjSFfUL33gHwaqwHUxgo Lztrh3r8d7TyJxk00X0QsfHRBj0thSCWZCx8/oA9fXZNDqZvgoBsLqtYw7LTWRdCZjAB6/ usXevPFXkyz9gzBKDOMiqbNNwRc4uYQ= ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UdN8J4A56iA/Yi/3LXmBrEB7A8CM+J0IcM9jhKufFj7EL36aH6H5APq9pyJ8utzhX5urjFDKf4MLOi9Q0SpBQeoY9mFX9e/3UwRsxr5aitv1lpRwPLTQmIxU218mWdf7tg2zd2rBi6gIT4swnDyxnWMnXy8XK8VTiCAPtBAdNK3zBMeIt/fISISSe0j4rNGn38chq5X2EIj6f/23Xz9S867rVz+E3TAacP3iFn41ERikt4B0v+uDAvxy0bHfBxLyboVyJOU/Fk46NwQ0lc6YfrCv83kV/o6wUmOF9XAoHvjSsKEux3H5mf9Xkak1UmAnZ9VeMZFvTXFNRkmRjIu+Qw== 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=xSHeQOq6jF97iT+jogQsm+QbOZF5ggB5PghQrqy60fk=; b=sZaAVnTzGv7i1mmuiCBU4aBjHfuXchY+z0QEQJmoJcv6A197zqQwfwslxj8WcOcPI3aXPzILzxxg51i9BvgUJJuvMzW9xNElQY0n7I91gwX5qUbsNKdhXzcrRhmwSW9RFkwSSG2dcDpdIUo5L2qN2YU9UNME5RYZ5+rAREGmtG3bGw7B02nTKh8SuH6eVUeyg7LAMT+FNYTI0A3UcbkaviV/dcVrnjM8TAUzaFqb1bKw2nyNfKtMaKaRd5Lnr5vJdgnCViaqcXRgnvV0wKDoZDgiLJhqBX7yziKpdhLI6LglJG15odirVo36WqHGoZSJ6XWiSTqkRBqZk2uhGAKyLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xSHeQOq6jF97iT+jogQsm+QbOZF5ggB5PghQrqy60fk=; b=as+1wxMcZmIUWlwdXcKzB1cw71/QqNKJeSFbwCtJirjsXayxIVvCc4mA09efjYwzrS1VmChuECBROQxrc+uvhFVl1PnLZsEVODcsZ1jq9P61tSdIvOIcvXhgUZJzFqtgaUEvsnZQ5XWmQrpKazOu2za7r1bxW2peGzDEni61YxA= Received: from LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:253::10) by LO9P265MB7730.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:3a2::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.15; Tue, 1 Oct 2024 18:26:18 +0000 Received: from LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM ([fe80::1818:a2bf:38a7:a1e7]) by LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM ([fe80::1818:a2bf:38a7:a1e7%3]) with mapi id 15.20.8005.026; Tue, 1 Oct 2024 18:26:18 +0000 Date: Tue, 1 Oct 2024 19:26:16 +0100 From: Gary Guo To: Danilo Krummrich Cc: ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com, boqun.feng@gmail.com, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@samsung.com, aliceryhl@google.com, akpm@linux-foundation.org, daniel.almeida@collabora.com, faith.ekstrand@collabora.com, boris.brezillon@collabora.com, lina@asahilina.net, mcanal@igalia.com, zhiw@nvidia.com, cjia@nvidia.com, jhubbard@nvidia.com, airlied@redhat.com, ajanulgu@redhat.com, lyude@redhat.com, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v8 06/29] rust: alloc: implement `Allocator` for `Kmalloc` Message-ID: <20241001192616.1e4e654a.gary@garyguo.net> In-Reply-To: <20241001150008.183102-7-dakr@kernel.org> References: <20241001150008.183102-1-dakr@kernel.org> <20241001150008.183102-7-dakr@kernel.org> X-Mailer: Claws Mail 4.2.0 (GTK 3.24.43; x86_64-pc-linux-gnu) Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P265CA0022.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2ae::14) To LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:253::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LO2P265MB5183:EE_|LO9P265MB7730:EE_ X-MS-Office365-Filtering-Correlation-Id: cb931fbd-5766-4e75-daac-08dce2468ac1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014|10070799003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?4uHjvjjYEL27FDcp+d9FA84VN0Wg87jWBOGlxoyJO9f3nvFQgK/pxDBIAac6?= =?us-ascii?Q?R8N1m8ZOsR3cHA1LiHmpJBuzKZiFMkI/PMoGlcUelISrhiGalTjlwocypQAZ?= =?us-ascii?Q?dEOXm4a0O0qJkXmobYcu0qURA1TPMxFStZsN8blqpZVh7ZPgVjVFtWf+Pfb2?= =?us-ascii?Q?K2lPdcqYzKm+4YY6t2GINfPuv4tKut613rwPBBarsxrWsexCBfrggXk+rJjJ?= =?us-ascii?Q?XuDH8oj4QKpT44IewC6MX3vQWTaadbP+oQiltsZ7GkQlxJfvIBtkBBUr4xkG?= =?us-ascii?Q?lZM0X5Ch+5WQQbT+93ccCmEF+j84pp5QzS9jm00BU0P3TPxwpAFrjpNt9Y5j?= =?us-ascii?Q?UaT7NFNwgBaT9K7k23A1WnZxabDAHV7BD3KH48K3SjmUs6qsDRhR2B1vmCG+?= =?us-ascii?Q?p7w33evYpSuFSYo8TAaW362XWIkzIbpH4ak9PrNu7tDVDtTlI5swKBHJDzsJ?= =?us-ascii?Q?6FXQvqQwye2bK8rc4AMeyzf/quKcU1w0oHRtk3UI3gMNBnAVoCoHSvLUuzPN?= =?us-ascii?Q?0c6HrcOeMnxgVys0T3sqMD7qavuIZlPl7W0PT4VaVD3lEweEJ0kdwEz2OfuU?= =?us-ascii?Q?29aEgLh2AoKtht6qgigmODZf8jOaXlb4VZM2ZcXQD0NAJgwmCkAZGus0/Wpr?= =?us-ascii?Q?Ee71txlx2AvaNhQMAoGZFKgYbiQVW1ZbWgV4IGNizd1ysvzMO8aaHAd622oq?= =?us-ascii?Q?Ii2dookReyHteJ2yyN3H5yPa5PviVbOxZgUGOoh1dS3yFl4gsk8taAyrvYHS?= =?us-ascii?Q?KG+ItkBhmI3sP7WFhiMAI7nXAaybEsOVle0SCfexhQfFDPtNs8dQw1FpX6Tq?= =?us-ascii?Q?5U9Rk9eKnndSA00JhNEb81ECCJn3ov9rpQSUGAU+Fb+LOqapSTnwna241FSR?= =?us-ascii?Q?1EM+gt5JdOD52O2tUnGJtexN+44NgzjBf61d80aWIWF848Lx31BkGS3izm2Q?= =?us-ascii?Q?7gWM+UIzmtAvMhL3EWODSSG+8vD8nv85dT79feReHLrKT2VJcKq8OTY3tkc1?= =?us-ascii?Q?DYZBnYr4DnI8ARuqAX2JtsRVQREkidjv6zY8zN5JZIyx3/Z3O/WYVN+/Z7oS?= =?us-ascii?Q?JzFgevwNaM7Yg3c2CpWcZp1ogeW5mEKOKeAZJ5lgYNaiwUPyHcEBItMqky5Y?= =?us-ascii?Q?ollmoQKnrlYs/JfwnKbEyZYKJl/XpBhOwGMxwU72KdYYHHXkcPN7jqQf7iPH?= =?us-ascii?Q?A7LZW43uQDBfm2N63UeK5bMzMg8IRJKMbfmxKbdo/B9bTAhEJ62B5EIO+GqU?= =?us-ascii?Q?9Ew1fIjDzRXv1y+O8x094tHhJXP0WdFC81xSENyELA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(10070799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rluo+alpi1XN26I76D89CRWhRT9c0HV1ch7S+b3YZ64BLnj+zghdXp0c3Txx?= =?us-ascii?Q?2tv7ZiS8xL68guio/TFgvGmiqU1Sjeqf91MRPCedrI1cYHScM2xRSEF8OLCg?= =?us-ascii?Q?ni2wnCsBOk1jryzOn4FDnq0ZzQ9BPY1QfyEylkGbGfyyPBWw4UHxG3i5GdX3?= =?us-ascii?Q?/kJ4Kie5vsDWJmCWvx4jbPPk/3N/qJNL+MXC4VPsDmqioqSFtx5jNTuUB9g3?= =?us-ascii?Q?nQiwMGrIxA0lOeBb05hMVItu1byKmXZ1ohnhWqlS3Ly67ggmNU/Sw1ru1HOK?= =?us-ascii?Q?4E77sq2KrhdnCKVoow6Ijjjb/+PDjhIFhwQYe6PSuIZAiwoKd1UFsbMxPv2I?= =?us-ascii?Q?Zfc/jsrqU5z6w3CXBjtvLNm8bW4rpGfBWwVsPdRsoWpQA+M/dbJrFZy+u6do?= =?us-ascii?Q?7UXrwcLlUYSgIMU3Gqyz3uCA/zmliuQCHF7CZNFIZaXwOrooeS9M9OIdVx13?= =?us-ascii?Q?IVAjGMhicMl2LvtAlIVDQ3nQ5z9HIaqAIACiT0xNIFL9owpZw5zoK12L9r12?= =?us-ascii?Q?TmchwvUYc+/bXep5sGhZjR6R4Zgpncihlq87EkJN0bYj5cGrHfQn4kX8yALp?= =?us-ascii?Q?jSPunmdy9/YDFsux/JNZ0CEpUIW6ridFp4o3kIsGZUlu4f6LaUpCrFNln385?= =?us-ascii?Q?6z978dDuDft6NoMeTAm+XKkS0YjuEUnZHrvPaswwuaWeFpH6jIDAkbm3zxgk?= =?us-ascii?Q?hyF/nRVNeMh8dYMIN51Yr1PWPC5WnQ6SGYZINCqIiszjdbXCNVbmO6kIEvU9?= =?us-ascii?Q?Tm3W98qgJOSSKL38W6SHGtE3xMeY8BE0WzXLVHoyeEuw6u3m3UOYPGPnpMMq?= =?us-ascii?Q?Jz2gQmfU0BY6jfqnGdUtkEbx032/Xe0cRzBIhnk1uo0WrKdupO86W0+dcTCZ?= =?us-ascii?Q?y//VYgYBAl+HuGJ28IOh0pam/E8QxgHXAkGtnMaD6kcBvxMmfWWymqQWfrLE?= =?us-ascii?Q?jI/l4QolvJrP6jBulw1GzfeadS/UDYOYz1hcG5RW18Ykmk/oHTrs9WO6M2TO?= =?us-ascii?Q?kk4ZnmAG/AWKK89MKxO4oE4iTKZdgC8XB9sEF5CekpRdYqDzO+HE08gSMpAO?= =?us-ascii?Q?gLGZ9hc3NTlNaG96arc5JfvWXzXu7wYtabKtcORcJ6+xOLo/YWU6BaEFNz1y?= =?us-ascii?Q?QZIcyJ6kCQmAyZuZ6XbYrYwlRcS2vz33a6VT7xjCagL5k1jfll8gLbEGK+CK?= =?us-ascii?Q?DXjFzWXeV6q4p4EUoHXwV9eFsZAfGE1aDv2lrY/JmxrqnNPXBmtbH6wuXfx1?= =?us-ascii?Q?QuNKerGJC0JoAx9qw/jsfwe5LsFE9iZ4uMMcGIuhnx6dXPwx5V98KxDct2Zu?= =?us-ascii?Q?rERa+qiCiZoAZWUyr9ux3Eht9WEFw3DtdXcXgsGmlCVp+wuJjKg7wI2ik0xM?= =?us-ascii?Q?o32zKKGsBILfuA4uMXVwFV1zl27vO+uaZT+1WKWMe8WsuJmUvnHVM0yLKgGG?= =?us-ascii?Q?Ikjkga2ALTLTkgT8iJobzH2iLG9oFD/Co6VMqF77CD8e6sWdVNeE5JQ5KTib?= =?us-ascii?Q?Gca0AGVBMBQjs1u/7kbPEvG/1y/5syaS4DPE5pcWFXwl1kCjfxnzU5S1oS52?= =?us-ascii?Q?hBMXA1htn2U4HKUK5Nhvq6SIZ/tDvLd2AiGOyzZq?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: cb931fbd-5766-4e75-daac-08dce2468ac1 X-MS-Exchange-CrossTenant-AuthSource: LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 18:26:18.4357 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: vawB7Uh/H4gn0qi+IbqPCE8olGH8JPQOneJE/bbqfSCPdi7K22fd2CJ9Djhla65bCPkdEZW3wbNg/THbRy4V0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO9P265MB7730 X-Rspam-User: X-Stat-Signature: ye3jq5pcm5n97jaekzjj3ku79me34qwg X-Rspamd-Queue-Id: 9280D40007 X-Rspamd-Server: rspam02 X-HE-Tag: 1727807181-315122 X-HE-Meta: U2FsdGVkX1/36QYK9uONg51L2Jqk351ey6saTk3UKcUDL+kDlbgvg4ikhM/QlwdD5Uu8/mYKiu3p8ehAwTH0OgDxW+lC4Zbn4mH4NJJY9TYd03norrASbzPqfYPLDphWLoL/DiOIQMrrtXYeSGJEZfOy3CxkomkO4+bzNceGw5y24cPx0WyvK1A+K8CeprYD/JJ2MOnsYZprz74TwUL3z2l7Q6LtdGhT79FZQgNeMXfppkcsT1HuQ1dW8m5ZI4TltgJETE8U/vOMvR6Hm1OpDhEPvWVBF59ZznL00SFOzhs/eevBbS5higTqKmVUGtJeRTucf8LNPEyxMotwWECpg/eOBBWSFGrRgO1Z5BBla89nHvn3Qmzv5CJ1LkwRi88VnvNC/EqKkbV3snfEEPUxmWsVfdVLatCzFnZES6/78ZL9DAaZJYQxZiAkvfbjVJqqzV+RNmUFzDm9x1KcxgKrw1gzynmFmNSlWnGYs0LniF2Rwc6oga29l4Con/uNE+Om8AtTjM344c3UPsRfD5uzxJPgqDyc75M0cwCubMS4Xw0EFenLzdEjf1U/k1UmxuIYNconIMiKJ4kINlz9DVrV/tSDkeQIqvba0l1yDxe1u7lmJoojZD4ou4n9ZqyX2XzGLd+P34EQGdAGU8IjZ/pkq/lXx2iHSp7pXV+SQSkEUyNiJneOhkW7TraTxwlIa9numqxkhLbQbHrO1i7Gj2v3V+rT/yiHYF2J5Kh88fTjtAUOAj2Kehc6bVCxyAhRBSPe6g5FdcBfKvaaKGpmxrEqNXL9w39K5QecZPVxETN2sIxvn6tqPcR9m//6vBg4w5SJ/BqFMc/iH8cnF6dqRud/zUtjO8uGiKANqkpzrbTUYKCG4rklJCEw/qm6qS3ldA2Zfs1cattZHaTgQNYT8ZSKyUogvm7WgK14Yf3fFCv2tV6klifKPnJSGukxngQw7uyFhr/vPdGx3u//3wcMgnH tupggBnn esSKt9JPfrz1vQYvDfod7awcjRDG5nDeWU8BYPiOXH4Og3j+W9QrGYDXxWeBGif35R1MCgAG1YEuUiLVjDoycH3gGiqdixlVCFS/mr+okD0EoMhGd+NJM1g3MWbbU6O6h64lws/do160KEAq5GoO+hgXpJqFXVmCFUQ7rEI7I2LJIX3FdFF/7YooAlviRgKLnUAPPfczr+4aXN6BCpPbUmb06lhJBUJTvHkcH9RZzQLLnE27DbIvEVt8JZo0dWmWgEXlVF9j7YCfzdOMsZpLuRBpWXwtTitNBU+PrfeDqgF02Z5EcNCp7deiNerCe539lPJLFIDQdl1jCM4iYj3lJ2nVIL78VTDxH1zo0ndrDyJxu0ns9IbAcrKnTs5dvF55OqnvuRHEhYRqOabN+kF5H60MV6JOG3chQ4TZN X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Tue, 1 Oct 2024 16:59:41 +0200 Danilo Krummrich wrote: > Implement `Allocator` for `Kmalloc`, the kernel's default allocator, > typically used for objects smaller than page size. > > All memory allocations made with `Kmalloc` end up in `krealloc()`. > > It serves as allocator for the subsequently introduced types `KBox` and > `KVec`. > > Signed-off-by: Danilo Krummrich Reviewed-by: Gary Guo > --- > rust/kernel/alloc/allocator.rs | 31 ++++++++++++++++++++++++++++--- > 1 file changed, 28 insertions(+), 3 deletions(-) > > diff --git a/rust/kernel/alloc/allocator.rs b/rust/kernel/alloc/allocator.rs > index 1f28b004b447..4f3c3ab7c7a2 100644 > --- a/rust/kernel/alloc/allocator.rs > +++ b/rust/kernel/alloc/allocator.rs > @@ -13,10 +13,16 @@ > use core::ptr; > use core::ptr::NonNull; > > -use crate::alloc::AllocError; > +use crate::alloc::{AllocError, Allocator}; > use crate::bindings; > > -struct Kmalloc; > +/// The contiguous kernel allocator. > +/// > +/// `Kmalloc` is typically used for physically contiguous allocations up to page size, but also > +/// supports larger allocations up to `bindings::KMALLOC_MAX_SIZE`, which is hardware specific. > +/// > +/// For more details see [self]. > +pub struct Kmalloc; > > /// Returns a proper size to alloc a new object aligned to `new_layout`'s alignment. > fn aligned_size(new_layout: Layout) -> usize { > @@ -53,8 +59,10 @@ struct ReallocFunc( > unsafe extern "C" fn(*const core::ffi::c_void, usize, u32) -> *mut core::ffi::c_void, > ); > > -#[expect(dead_code)] > impl ReallocFunc { > + // INVARIANT: `krealloc` satisfies the type invariants. > + const KREALLOC: Self = Self(bindings::krealloc); > + > /// # Safety > /// > /// This method has the same safety requirements as [`Allocator::realloc`]. > @@ -106,6 +114,23 @@ unsafe fn call( > } > } > > +// SAFETY: `realloc` delegates to `ReallocFunc::call`, which guarantees that > +// - memory remains valid until it is explicitly freed, > +// - passing a pointer to a valid memory allocation is OK, > +// - `realloc` satisfies the guarantees, since `ReallocFunc::call` has the same. > +unsafe impl Allocator for Kmalloc { > + #[inline] > + unsafe fn realloc( > + ptr: Option>, > + layout: Layout, > + old_layout: Layout, > + flags: Flags, > + ) -> Result, AllocError> { > + // SAFETY: `ReallocFunc::call` has the same safety requirements as `Allocator::realloc`. > + unsafe { ReallocFunc::KREALLOC.call(ptr, layout, old_layout, flags) } > + } > +} > + > unsafe impl GlobalAlloc for Kmalloc { > unsafe fn alloc(&self, layout: Layout) -> *mut u8 { > // SAFETY: `ptr::null_mut()` is null and `layout` has a non-zero size by the function safety