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 D8BF7EB64D8 for ; Tue, 13 Jun 2023 19:27:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 09E538E0003; Tue, 13 Jun 2023 15:27:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04E6C8E0002; Tue, 13 Jun 2023 15:27:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E0A788E0003; Tue, 13 Jun 2023 15:27:10 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id CA98E8E0002 for ; Tue, 13 Jun 2023 15:27:10 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9853FA05BD for ; Tue, 13 Jun 2023 19:27:10 +0000 (UTC) X-FDA: 80898707820.09.47AEF84 Received: from GBR01-CWL-obe.outbound.protection.outlook.com (mail-cwlgbr01on2105.outbound.protection.outlook.com [40.107.11.105]) by imf19.hostedemail.com (Postfix) with ESMTP id 7DCC51A0004 for ; Tue, 13 Jun 2023 19:27:07 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=garyguo.net header.s=selector1 header.b="Nf/xeMXj"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=none; spf=pass (imf19.hostedemail.com: domain of gary@garyguo.net designates 40.107.11.105 as permitted sender) smtp.mailfrom=gary@garyguo.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1686684427; a=rsa-sha256; cv=pass; b=jqMG/AeRh7YIFvQ5WCRfl2mYcBK7DYPsNnXM8kaBfvQEvzPipdFADBOlGTYDDk5A6ybFtE S6dRn13PZiuAkM1UQmYn4nFXMzQPegV0casO0B7MatH7wLhWr+aaKDsAKHAaQ1O8d7tmHB i82iSrLwaZCZqhYeVzFgpBpUb6oG/IY= ARC-Authentication-Results: i=2; imf19.hostedemail.com; dkim=pass header.d=garyguo.net header.s=selector1 header.b="Nf/xeMXj"; arc=pass ("microsoft.com:s=arcselector9901:i=1"); dmarc=none; spf=pass (imf19.hostedemail.com: domain of gary@garyguo.net designates 40.107.11.105 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=1686684427; 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=4bQlsf6RL4rbZaE9Sv3N2HdZW759fa9C6QoollQ+xCU=; b=SrY52udYZcsxmH68LKm7bhBeIH7JTO2NBbr2FQ2nRuXkehhk6T1+z/fnhFMLFhZU41wCnX 8vNJxJv/2k1yCF4DdpysZHDpfFB6cWXCd7AeR573+iDTfwYdPOE5MAgLUt1aJ8EmyK+zBk p6QQ2iTTwrxi1qm8HK/t/XtU+e5SjpQ= ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hn9TQbO57CHmfn04gc5/xWdnS6xQvoX3lKl+kiJ2GnDkpq5HmhWcWRPDWErecsJ6QulvkL5efMXDo5H7eFoGvlBASn+InNjJMtHxNVREQ6r6g5vDkUoQrY94pD8ysmjp5rR2hiFDeWKpSHK95FvDxYePlDiK2zhBScPyMa/3AyZoVHgriPPGBnukPGzJYBoI1MkyPTyVhHDwBKnshuF4xnY5pJyWbQgME4cRdASn8KKupNm8d9kJqB8p6njS3bHMNxKHXeAxbRn5Sj6YEuL9g6b9rlX/sj/T6NA7U2ads5jsAwEHDapZ5GiI2wP3ZdS5oxhkNuvSb/tf+kAjGKjFWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=4bQlsf6RL4rbZaE9Sv3N2HdZW759fa9C6QoollQ+xCU=; b=BAjn8qq3xyjUOcCU99gmBqXS7qdxjUV/nfCIKRBwttjyoPHbgNGlkznrrHerkZ4EeEUIcrnC9+olnNnNIJ6HE5zKS2FSaNwvxeZvXYxl4j0DQcabdO9DjAQvRPKMtglY5l/d6ztZDkHOgDm8veGaR/mUEljxwsUpDLGpkmKTyzisiPFYPz2QBl7McY6wwAsCe32LNsQ86oQb5BjV+7y38hDykEmb9n+9a0cNbxuf2ChoQU3naOhY+CdYrsVTP9vCrL8cauE1/aokHkGwoDgUYdYFRSF3QJPDnzgNm5Zqy1jiq5LNDnaNj8LSYCwudqGtqyV3IFYVJyjFcvE483c4Ig== 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=4bQlsf6RL4rbZaE9Sv3N2HdZW759fa9C6QoollQ+xCU=; b=Nf/xeMXjpHethGatPjJ7rf2u34s7HALSSrXH41jZgiKYlEGnYgIP83+Q+l1MjHOF25SSCFnNtxcxOAV27IYwuiTfdFBpNW8oW0e8tPru3+q3GMQNp7j6UBtBT+sUTU0tKPjOuvSQu9o+Qh6GzPNit/wb52eWRKmNBydx/O5MFoc= Received: from LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:253::10) by LO4P265MB6700.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2f2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.21; Tue, 13 Jun 2023 19:27:04 +0000 Received: from LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM ([fe80::f968:901e:1398:7d22]) by LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM ([fe80::f968:901e:1398:7d22%4]) with mapi id 15.20.6500.020; Tue, 13 Jun 2023 19:27:04 +0000 Date: Tue, 13 Jun 2023 20:27:02 +0100 From: Gary Guo To: Boqun Feng Cc: rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , =?UTF-8?B?QmrDtnJu?= Roy Baron , Benno Lossin , Martin Rodriguez Reboredo , Alice Ryhl , Dariusz Sosnowski , Geoffrey Thomas , Fox Chen , John Baublitz , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, Kees Cook , Andreas Hindborg , stable@vger.kernel.org Subject: Re: [PATCH] rust: allocator: Prevents mis-aligned allocation Message-ID: <20230613202702.56f321ab.gary@garyguo.net> In-Reply-To: <20230613164258.3831917-1-boqun.feng@gmail.com> References: <20230613164258.3831917-1-boqun.feng@gmail.com> X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P123CA0215.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a5::22) To LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:253::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LO2P265MB5183:EE_|LO4P265MB6700:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a9a731f-e5d6-4876-d5b8-08db6c442b2f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dye1vyA5h+/lgzrI0ctA+o6wOg0tf8En0yElW68KElDe1/+GfIJGfve9alBsWgDn8R3yVEBms69zaeThtAMz+R/CJvibFMaV/JEtXQrAQt17W0zeLz4Sw6V+pl9Pygb+9zSxfopKUKWgTuTBlTU/9up2yNFfRRq82FqpFqE38uccihTmZf+owXw5VVtZOZZy7rcSr+6ZdfzK1pzqG+uDZaJs06DNZ2buMzVwc5cMc52gtfYVBm4cHDS/VIE5b2Tgm183FTjrrVUdTDnQOHTahLMakCAcnf7TUtCFP78VkRx78itJYKeF2AjVWIhiNKnNmLIJlogeVHcXAQWpaUZkLTJV0K7s1gfA1qxUTGRIShv80MmC3BnFe7uRvP2JQl2M6Mmy+85goFmlzWJn18G6ddA8SVNuO4iB4HJRzQFY0Zi9ZOljIUbiZJtP9uXDr0TOW4j204hg25FLoOIX0hvIJyJr8EwONGRStQwbijzhsFnELpXr36jxqDzCZrr3ukV2Cb0vZvHwz2vf7zTCEwfJu4fbG6K6uRymIrq8Ge86JaA= 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:(13230028)(396003)(136003)(376002)(366004)(346002)(39830400003)(451199021)(966005)(6486002)(478600001)(26005)(6512007)(83380400001)(1076003)(6506007)(36756003)(186003)(38100700002)(86362001)(2616005)(4326008)(6916009)(66476007)(66946007)(66556008)(316002)(5660300002)(8936002)(8676002)(7416002)(41300700001)(2906002)(66899021)(54906003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WNgNnF9BLRwkiRtiEd7IlJ7wDPkV7PJcfUxV3Fz66+NPtN/NYHJ+5d04n7kr?= =?us-ascii?Q?nxnG0esKRk5YdTk7jqRFtAdjRWC2QW8aKJJT1idAcRftO/bxw3kI7gFtkdfr?= =?us-ascii?Q?8L1UI5lDeDlJOj2CLQWDsm1NO+7hUqctWK4xIieFRTTH9Wc0UGptee4HCEL0?= =?us-ascii?Q?aVicKIwKngM13QaAvr0SLYGfE8pEy8pGSuGx+t1UUTY592s6iYavQpSPjDxI?= =?us-ascii?Q?ZhfNNiQxOFr+LCS2fheC5hbBoldImXkn2gDxLMH2E+ORDmD7W8NAVg4lZ+qA?= =?us-ascii?Q?x8FqidPUkVR/SrYvlM9D+264liET5FPaxTAAf5KI+JeOjMbaEWXsziMnkXsn?= =?us-ascii?Q?XZW36FkeUS2ZlX1usAk6qWvG4890508bE1HH0ovwhmnojFDsQTaS00SpHfvp?= =?us-ascii?Q?/onrVg2ThVelpNZr0pv+m+0u1zg9BhqOr9PuI+Vd/HWTSPcdiWUuszeSPimF?= =?us-ascii?Q?Z9+/srCeHRa1khvtFTfGV8FiobtSl4xAA5r04xewk3Kno43Czds1t8EUYwEN?= =?us-ascii?Q?f0tw12WB1eId1ixm0PvCH0b1OViFC2YZD+Q4A2A+RLUpFzecUKtOL9U4GNbw?= =?us-ascii?Q?Tv4opVRd1gw9fzEyBhZqDtMIdXcti7eb4jb7yIyBC5/Zui1TJBFQne8zN9KN?= =?us-ascii?Q?+lMoue4L021Y0xDJ7r4kcz+zCtZP2ng2/NaACaM9bbCwO+WIcnMtW6gHLNHa?= =?us-ascii?Q?vdoRgx84ejQl6IuVpLLjcDJkl8gzwLlXj09mTVXzW4VP5ozd1bJF6kzKJ28Q?= =?us-ascii?Q?gJroj+y1BkwztRBFbJsw72eU/1bcuQ+PLcaMofTq/QVVBhu2/lMH1ntVgVNV?= =?us-ascii?Q?Ttv/hosjFMG3SE3tUrpnkWg503QCBuZ/tbNq7n153Ap/leLUzwyb9UuI+RsU?= =?us-ascii?Q?1Py3ywwfI8SFPX+10I5s+yYrc2nToH4TF4c/PRbCSk6MNCm872oJwDhBeamG?= =?us-ascii?Q?7LChj1jw5AFMmIxrh4nwRkyWaMfPl8Qe7gd150FBQGYEBCpljBg8UZ8359hX?= =?us-ascii?Q?xFRr87Z76Tj8Eg0xhiYewJUGSsVLfPRAGJc+2CFWCRM1lVlhdnbaNVygljPE?= =?us-ascii?Q?PoeY2taYENdctzfxyA/O5Fqs9bBOajb3PnRNdSNHhFT8nZ1cnPzQk/PbTZEn?= =?us-ascii?Q?eQTmot1qSNWQFWbgccviInpjuB7kw7pOImGgONsaBLnvh4ekeo7ijtnxugoq?= =?us-ascii?Q?XR3aTFwM24Ii4n0iVUprju5m/jqN3NGilEJyaHawFmSG45Ys4SbCDdul8X1M?= =?us-ascii?Q?WG7h6mzNBoFXfnPeAP+fS4br5fK3WGrHI9gLaS7rwC5rnitvtgkELKCvGQ9H?= =?us-ascii?Q?5YZJW9gv87DChn4Jifp6BCSYJz5IcY78HSqXTrl5hHtMGJ8bdqMTOugrZnCh?= =?us-ascii?Q?Te3gsd5NMa1T+2C2inSDpfcjSxe0T3j69GcJB+BmI8usmprzU+fybQHigIPf?= =?us-ascii?Q?R1icJ9gSz6pLmFkkOkFb2f2Fy+mZ7njZBei/yHRZcZZYm11D6f6VPskZGn8Q?= =?us-ascii?Q?ozX4RPvJZYOLYewYHEpWTWvPPocpIOr3FKROyoJNqFCumm94FkL6KE/yxhIz?= =?us-ascii?Q?S2B1apjvzlS8p7OT2/GUyNFjQ98Tu8C9WrqhfJA/?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: 6a9a731f-e5d6-4876-d5b8-08db6c442b2f X-MS-Exchange-CrossTenant-AuthSource: LO2P265MB5183.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jun 2023 19:27:04.2804 (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: fKSf5tv6EAIxVu641xAnX9SKgkUqlebXt6Hi+hhvujFCecbAil8XG/QJqevghjnLS3o+Gsfy2KRvxl1/fxf5fw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO4P265MB6700 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 7DCC51A0004 X-Stat-Signature: odc55ernwufjsr5nbwb3639ygnxs8zms X-HE-Tag: 1686684427-907449 X-HE-Meta: U2FsdGVkX196bWlAQ72FxHN/3gEVUzW/8uJvpYFdYM72w/QLg0HGMCc6Cv6fJWRfzA96PkT4u8qK1D2rXzkgplQWYIan7/nM4CvTXtssTemVC9SP++wj6Sz9RvyuVR7THOPjfPQ0B6rHP30fykZ2jC4FQxfa3Zl22M+CkT0T4vW9jgEMqOJKjMpG+kF5nOHZiTPUm9K95/vd2QG5GUi9Hbkr554vleO6Zbu9zZW+Gn73PxrMK1AsQzS/c9K4gjq76Y8UostUUdiiWbed/XLuo6jLrOdFiFhstaWcHbjNS3mdXK8X2Cghr1RCo/nQLWtqETGA38/2vIdJ+Uf/Dk2m/BWBh0xWG7uHbazxXU/0fwy2vB6+/nMGkk2G2MxL6zYN5kjZmTVIKlqH9bMsbuDlGLkEs/rnPK/e8JgTerOK9p1msXpkfps1dsd/M/dWtcpkeDbQzu0TTGaICAVY9sJ710JocKQMyXcO6/0ap5I245xPAtMXCInJKuXyU98ck3XumtwP3CQ9E6+UaKJ4VCU6yL6hSYxBS+whQ8lnIdWlU8j1pmZwH8KbznfGoUN6rjeQ8xTtStH6Q0myxmMveyYmSJ8ktZSckc7RuSGviGrPiIFCzQaJavH7UdndfOH10kjaxhBPZfvQFImZ4U94I3HGRQT+qgSHOVl9115GuYmMku1zSExsSBlHaC0/4Nj9Dk338MMPOl5b2C8XwQFhA03Gii+VTkJgxF8I88uXUh0Nhfuu7j1vjHe/MQSSIgVIQXbNudOrZfaDsTFBCzi1g82xL3/nvaEENglKcxshg9utoPQRuPPzhcDuh+YMVOfr7NQZQngajtU6qz/AECFVXsZ/4tsnFZ6NN01JeG+VB/2H69yJNneWuR8PsrpQUihTWAoa0+G3fe+fj/oilR1ZS4d4a8tOM6f54paCcNYj2FC2KnP2lDA+UexjXmAVfILFqkGyXV+WpdxCDkY59AAR5Pz e3sfSYs5 9407xvNv/pPYcr5ZjhKm+bAwGQf0rwtz8CfSpOZ6+t0FfAdr24mcJyE4ZHjBaPZAv6YM/Hb3oZEtJH+WJeaUNnzoZU5DaO+I9Pa/P7CJrT3FrdQpzt++0neTn2Sbt75+NVh7eFQT8/mXv7eOFUNHZhc+lYwXjKVgHobr2uBdWoaAr4S1xQ2MSjrm4NAq72XlJ9g0hlQUJGV3m3Ht3LULdn5CnXqocuYg5/d3LFF0koP2AHH+hYA3ol3b3ShDpYgjHLfrr+tfrkwjE9d+MJn9059P3S8OfhGjVD1qci81JhiDjHKnyKbiLVGO8pkilbcUYtmaJ+Ws6DozmlgyESPEMNFkLon+bWHgheX+St1LAkf8RQWzONhz/InxF+GTE0JHXP1S7ifY/Zbk2Ki1yX5rUnVSu+FgdjVzWcRxhHzBwhVemui2WzgJUei7R7uHpyMEi3U++Y6qBmfVJ05yviz+yQz7a7plKsqg4oOZKxdY0KTAVhJM= 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: On Tue, 13 Jun 2023 09:42:58 -0700 Boqun Feng wrote: > Currently the KernelAllocator simply passes the size of the type Layout > to krealloc(), and in theory the alignment requirement from the type > Layout may be larger than the guarantee provided by SLAB, which means > the allocated object is mis-aligned. > > Fixes this by adjusting the allocation size to the nearest power of two, > which SLAB always guarantees a size-aligned allocation. And because Rust > guarantees that original size must be a multiple of alignment and the > alignment must be a power of two, then the alignment requirement is > satisfied. > > Suggested-by: Vlastimil Babka > Co-developed-by: Andreas Hindborg (Samsung) > Signed-off-by: Andreas Hindborg (Samsung) > Signed-off-by: Boqun Feng > Cc: stable@vger.kernel.org # v6.1+ Reviewed-by: Gary Guo > --- > Some more explanation: > > * Layout is a data structure describing a particular memory layout, > conceptionally it has two fields: align and size. > > * align is guaranteed to be a power of two. > * size can be smaller than align (only when the Layout is created via > Layout::from_align_size()) > * After pad_to_align(), the size is guaranteed to be a multiple of > align > > For more information, please see: > > https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html > > rust/bindings/bindings_helper.h | 1 + > rust/kernel/allocator.rs | 17 ++++++++++++++++- > 2 files changed, 17 insertions(+), 1 deletion(-) > > diff --git a/rust/bindings/bindings_helper.h b/rust/bindings/bindings_helper.h > index 3e601ce2548d..6619ce95dd37 100644 > --- a/rust/bindings/bindings_helper.h > +++ b/rust/bindings/bindings_helper.h > @@ -15,3 +15,4 @@ > /* `bindgen` gets confused at certain things. */ > const gfp_t BINDINGS_GFP_KERNEL = GFP_KERNEL; > const gfp_t BINDINGS___GFP_ZERO = __GFP_ZERO; > +const size_t BINDINGS_ARCH_SLAB_MINALIGN = ARCH_SLAB_MINALIGN; > diff --git a/rust/kernel/allocator.rs b/rust/kernel/allocator.rs > index 397a3dd57a9b..66575cf87ce2 100644 > --- a/rust/kernel/allocator.rs > +++ b/rust/kernel/allocator.rs > @@ -11,9 +11,24 @@ > > unsafe impl GlobalAlloc for KernelAllocator { > unsafe fn alloc(&self, layout: Layout) -> *mut u8 { > + // Customized layouts from `Layout::from_size_align()` can have size < align, so pads first. > + let layout = layout.pad_to_align(); > + > + let mut size = layout.size(); > + > + if layout.align() > bindings::BINDINGS_ARCH_SLAB_MINALIGN { > + // The alignment requirement exceeds the slab guarantee, then tries to enlarges the size > + // to use the "power-of-two" size/alignment guarantee (see comments in kmalloc() for > + // more information). > + // > + // Note that `layout.size()` (after padding) is guaranteed to be muliples of > + // `layout.align()`, so `next_power_of_two` gives enough alignment guarantee. > + size = size.next_power_of_two(); > + } > + > // `krealloc()` is used instead of `kmalloc()` because the latter is > // an inline function and cannot be bound to as a result. > - unsafe { bindings::krealloc(ptr::null(), layout.size(), bindings::GFP_KERNEL) as *mut u8 } > + unsafe { bindings::krealloc(ptr::null(), size, bindings::GFP_KERNEL) as *mut u8 } > } > > unsafe fn dealloc(&self, ptr: *mut u8, _layout: Layout) {