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 DADE3C52D71 for ; Tue, 6 Aug 2024 16:06:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 71ED26B0089; Tue, 6 Aug 2024 12:06:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6A7886B008A; Tue, 6 Aug 2024 12:06:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 548046B008C; Tue, 6 Aug 2024 12:06:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 32AC66B0089 for ; Tue, 6 Aug 2024 12:06:44 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 88F0FC0392 for ; Tue, 6 Aug 2024 16:06:25 +0000 (UTC) X-FDA: 82422297972.27.4A2F1BB Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by imf09.hostedemail.com (Postfix) with ESMTP id 9EC72140014 for ; Tue, 6 Aug 2024 16:06:21 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=DK9UsCwg; dmarc=pass (policy=quarantine) header.from=proton.me; spf=pass (imf09.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.43.22 as permitted sender) smtp.mailfrom=benno.lossin@proton.me ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722960336; a=rsa-sha256; cv=none; b=B6ngO1NQG7n6lIYEaQvpaRjzw++N0Zr0B/wCBzZ/Lpg/KqArwuhKzWmfkyVco0vxicwPgB bC9obZnRFuiZseVht68dHjW+S7lExGs6R6Xwk/OZMIeiYxDNJ1zsvJyRG5UhS9bFz3K44u mH1dH60FMoRSDqN3vPqmvkpC3BRKCVY= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=proton.me header.s=protonmail header.b=DK9UsCwg; dmarc=pass (policy=quarantine) header.from=proton.me; spf=pass (imf09.hostedemail.com: domain of benno.lossin@proton.me designates 185.70.43.22 as permitted sender) smtp.mailfrom=benno.lossin@proton.me ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722960336; 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=mlhTAM6ZiLpoZgUUpSWbqGvf2fRVZ9P9Bjbr6GNY4yk=; b=QB68v4vNen/3VPnq9b4KiHWxVksnYTRLY/4qz0RPnqPb9yyDmLk7AppW9K4fHGU8ehJ/cZ 3ECNnjtxJ0sk3UhdVmJad5yP/aWQpQXMVNV02JLmbbD5XhPWIk2uVhVDk5gIjm5i19Mz0J bY9erAeV5PbPxGwYmbqWdLqZx4tdJWg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me; s=protonmail; t=1722960380; x=1723219580; bh=mlhTAM6ZiLpoZgUUpSWbqGvf2fRVZ9P9Bjbr6GNY4yk=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=DK9UsCwgE8AotX3XYEaS+lkaXI/0SdEdIPah+KAbNMS8s49hAYzjpt8iNG6T9Hfh3 ybn01IzeGDMDOfpM8PjhNr4FFlZE9TiQcyEbZ8Fh++utferc3utkdQUp9T3BV/7BOY sGFd+Na5KFx8pD5YA3Z8iMaBR+y425tE/muQgqmxYq3F1xL7G8u9ac7LF9Hf/HdNYL Djb8QL6EZOU1fiGTvaK2m0Evgc2iTSDzOQeljxxwSQOJgEvT9US0R/sODP4s/JUrDv hf4on8QkTVmdGIR99PagNC1t3HvZBOv+NDmJknKQmVQldI14oQd9g82dlS9OQzHYHD fp39lAgncBK8Q== Date: Tue, 06 Aug 2024 16:06:14 +0000 To: Danilo Krummrich , ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, a.hindborg@samsung.com, aliceryhl@google.com, akpm@linux-foundation.org From: Benno Lossin Cc: daniel.almeida@collabora.com, faith.ekstrand@collabora.com, boris.brezillon@collabora.com, lina@asahilina.net, mcanal@igalia.com, zhiw@nvidia.com, acurrid@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 v4 02/28] rust: alloc: separate `aligned_size` from `krealloc_aligned` Message-ID: <10c87505-bf27-4685-af10-6c15fcf8c854@proton.me> In-Reply-To: <20240805152004.5039-3-dakr@kernel.org> References: <20240805152004.5039-1-dakr@kernel.org> <20240805152004.5039-3-dakr@kernel.org> Feedback-ID: 71780778:user:proton X-Pm-Message-ID: ff23bda0148e35d5412c6c8021c32c60276fbda6 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 9EC72140014 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: koh6f1hah8msqh5z53jbji9om4erua7s X-HE-Tag: 1722960381-922664 X-HE-Meta: U2FsdGVkX1+1WrPmROXSxwwdFIKB8U1vhbw3uzXdmJS+Fw53CJYdoNMj7SIHyAy2cTKS2vTtMP9CR5zrsbGe44/BY364EBIw43nbDrHSri2/JSzFqfw8muWkV1WH8pKWUWPV+hmBr7IiseVspyijpgZf7oEeJxJt9aEIVNfkZBydi3Yl5WOQubefYZZ5JmDoiMVAbKblKD48IE+DgEEHTFY+e5zw0qwRDnktpXqVUNk9vUYqOUb58n5GVn1Tu0Ehn4QAZjJXyRlXi8sdjasKt1MNEqSbKv/hURFhJZQM36Bl2yy85Q2dL3BEXLiEDgWIODrJsbiALGGHqSngGALhwmjWrgloOfTkoYWTPoXM5VC7UPQTHOCHQX1o91P5cTeT+xpcdGbPrVxJHXIdpHn2tl9tewv91xi3XwRCXMHVsTpeyRjIkjIanVXYFRD4iWqKS6sqfm5AScpOxlWuvO/Agc1qcgvGrl6EemAtgbllr5t8H2ELrworVxVMUQHfZ6Qc/gvAHjLjw/gncR7WUGTpd8Q1aCjWVblK6aEGdKWqZPxlEnfexWYvUuCRXv4QRD4OJ43s+d/3E9Lm+9NtTEpjNZ0AhLc05UFA9JZO3/9wBdc7uNBxvgLUDZ0qZfyuMdRKVC8xWdwVB6gdcWP2f8TxxU+oK+grjLlYrYhK6q6Rnf729ttpaMLzcGhj2NRq5gZBz9Y94m0M7JdNn0eO3GGRnbH3HRraMTXoFejWtuus8QTyp1l4QcGOexK+1g4+lUbhU8RoEDIIldfzkQVpa1OnXYe4Yx30jcouYgaLTDBYswCJt6s+zATUeoqClHhoZqd4mnDxv3kBOf5WNlw1v2DSwE1IEeWcFonbTEIT/2h3+EMNeQP9WwLiJewdy1K5eh5wgzgDxynM9r4oLD7ncyYjlGF8vmNNVKK+5TOuWO+LloFM5k1O+vh1G1A6ytwObG1FZ1dpaQ1IcIVwfoAfQ9g c659Oi82 QlJ7SAb/ye05xCtgA9d7H63sxCizGJnRdAQouHIGTvJa1i/FXj89s8HIgxV3YbBv2QyS+VjHq+4HkJAfhcpIXePftjpnDf6MVnCDeG9QG+WOE+dOpc4f2G1suo9cUYM0qb+oToos0X9W6IICobm8CoVI/mnVdWrD0hKB9dY4P/aYxi6pry0CO+JZGu7zHf9W9GmtBRRUFfmOnjyQeXOEmQPvaBV6/J7mkA6n4E6ALMoiWvc63gEpkEX1ebz5Igkn6PxXRyb1bgExpL3xBmGLa1s6T98heEFqHPtW6oJm4pgpWegW3kvknMp2Y7geXavMMN+yjXvxIM21hA463O3TdUokxcdniGqFcJO+gG8FNB+vBYd3+aw14MEkB/EoEqp9kqi9QI2fchrQ8CR1ep5iCmBM6q2ldCUnWzB7zX7kzTLztGMD5Tu4usDgZ4tYqEPNoK5EA8ov9duTZwr2GrZbFjDmdtMDGeq2CJ57fqvBhYdiU7NU= 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 05.08.24 17:19, Danilo Krummrich wrote: > Separate `aligned_size` from `krealloc_aligned`. >=20 > Subsequent patches implement `Allocator` derivates, such as `Kmalloc`, > that require `aligned_size` and replace the original `krealloc_aligned`. >=20 > Reviewed-by: Alice Ryhl > Signed-off-by: Danilo Krummrich > --- > rust/kernel/alloc/allocator.rs | 27 ++++++++++++++++++--------- > 1 file changed, 18 insertions(+), 9 deletions(-) >=20 > diff --git a/rust/kernel/alloc/allocator.rs b/rust/kernel/alloc/allocator= .rs > index e6ea601f38c6..e7b7eba84acb 100644 > --- a/rust/kernel/alloc/allocator.rs > +++ b/rust/kernel/alloc/allocator.rs > @@ -8,27 +8,36 @@ >=20 > struct KernelAllocator; >=20 > -/// Calls `krealloc` with a proper size to alloc a new object aligned to= `new_layout`'s alignment. > -/// > -/// # Safety > -/// > -/// - `ptr` can be either null or a pointer which has been allocated by = this allocator. > -/// - `new_layout` must have a non-zero size. > -pub(crate) unsafe fn krealloc_aligned(ptr: *mut u8, new_layout: Layout, = flags: Flags) -> *mut u8 { > +/// Returns a proper size to alloc a new object aligned to `new_layout`'= s alignment. > +fn aligned_size(new_layout: Layout) -> usize { > // Customized layouts from `Layout::from_size_align()` can have size= < align, so pad first. > let layout =3D new_layout.pad_to_align(); >=20 > // Note that `layout.size()` (after padding) is guaranteed to be a m= ultiple of `layout.align()` > // which together with the slab guarantees means the `krealloc` will= return a properly aligned > // object (see comments in `kmalloc()` for more information). > - let size =3D layout.size(); > + layout.size() > +} >=20 > +/// Calls `krealloc` with a proper size to alloc a new object aligned to= `new_layout`'s alignment. > +/// > +/// # Safety > +/// > +/// - `ptr` can be either null or a pointer which has been allocated by = this allocator. > +/// - `new_layout` must have a non-zero size. > +pub(crate) unsafe fn krealloc_aligned(ptr: *mut u8, new_layout: Layout, = flags: Flags) -> *mut u8 { > // SAFETY: > // - `ptr` is either null or a pointer returned from a previous `k{r= e}alloc()` by the > // function safety requirement. > // - `size` is greater than 0 since it's from `layout.size()` (which= cannot be zero according > // to the function safety requirement) > - unsafe { bindings::krealloc(ptr as *const core::ffi::c_void, size, f= lags.0) as *mut u8 } > + unsafe { > + bindings::krealloc( > + ptr as *const core::ffi::c_void, > + aligned_size(new_layout), Can you move the safe operation outside of the `unsafe` block? With that changed, Reviewed-by: Benno Lossin --- Cheers, Benno > + flags.0, > + ) as *mut u8 > + } > } >=20 > unsafe impl GlobalAlloc for KernelAllocator { > -- > 2.45.2 >=20