From: "Benno Lossin" <lossin@kernel.org>
To: "Alice Ryhl" <aliceryhl@google.com>,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Danilo Krummrich" <dakr@kernel.org>,
"Matthew Wilcox" <willy@infradead.org>,
"Tamir Duberstein" <tamird@gmail.com>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Miguel Ojeda" <ojeda@kernel.org>
Cc: "Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Trevor Gross" <tmgross@umich.edu>,
linux-mm@kvack.org, rust-for-linux@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] rust: alloc: take the allocator into account for FOREIGN_ALIGN
Date: Tue, 15 Jul 2025 18:00:14 +0200 [thread overview]
Message-ID: <DBCR5IFQFMUU.23UNP95G4NKWA@kernel.org> (raw)
In-Reply-To: <20250715-align-min-allocator-v1-2-3e1b2a5516c0@google.com>
On Tue Jul 15, 2025 at 3:46 PM CEST, Alice Ryhl wrote:
> When converting a Box<T> into a void pointer, the allocator might
> guarantee a higher alignment than the type itself does, and in that case
> it is guaranteed that the void pointer has that higher alignment.
>
> This is quite useful when combined with the XArray, which you can only
> create using a ForeignOwnable whose FOREIGN_ALIGN is at least 4. This
> means that you can now always use a Box<T> with the XArray no matter the
> alignment of T.
>
> Signed-off-by: Alice Ryhl <aliceryhl@google.com>
Hey this is cool!
Reviewed-by: Benno Lossin <lossin@kernel.org>
One question below.
> ---
> rust/kernel/alloc/kbox.rs | 15 +++++++++++----
> rust/kernel/sync/arc.rs | 6 +++---
> 2 files changed, 14 insertions(+), 7 deletions(-)
> diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
> index 63a66761d0c7d752e09ce7372bc230661b2f7c6d..74121cf935f364c16799b5c31cc88714dfd6b702 100644
> --- a/rust/kernel/sync/arc.rs
> +++ b/rust/kernel/sync/arc.rs
> @@ -373,10 +373,10 @@ pub fn into_unique_or_drop(self) -> Option<Pin<UniqueArc<T>>> {
> }
> }
>
> -// SAFETY: The pointer returned by `into_foreign` comes from a well aligned
> -// pointer to `ArcInner<T>`.
> +// SAFETY: The pointer returned by `into_foreign` was originally allocated as an
> +// `KBox<ArcInner<T>>`, so that type is what determines the alignment.
> unsafe impl<T: 'static> ForeignOwnable for Arc<T> {
> - const FOREIGN_ALIGN: usize = core::mem::align_of::<ArcInner<T>>();
> + const FOREIGN_ALIGN: usize = <KBox<ArcInner<T>> as ForeignOwnable>::FOREIGN_ALIGN;
Do we at some point also want to give people the option to use vmalloc
for `Arc`?
---
Cheers,
Benno
>
> type Borrowed<'a> = ArcBorrow<'a, T>;
> type BorrowedMut<'a> = Self::Borrowed<'a>;
next prev parent reply other threads:[~2025-07-15 16:00 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-15 13:46 [PATCH 0/2] Take ARCH_KMALLOC_MINALIGN into account for build-time XArray check Alice Ryhl
2025-07-15 13:46 ` [PATCH 1/2] rust: alloc: specify the minimum alignment of each allocator Alice Ryhl
2025-07-15 14:05 ` Danilo Krummrich
2025-07-15 14:35 ` Alice Ryhl
2025-07-15 14:39 ` Danilo Krummrich
2025-07-15 16:01 ` Benno Lossin
2025-07-15 13:46 ` [PATCH 2/2] rust: alloc: take the allocator into account for FOREIGN_ALIGN Alice Ryhl
2025-07-15 14:19 ` Danilo Krummrich
2025-07-16 9:46 ` Alice Ryhl
2025-07-15 16:00 ` Benno Lossin [this message]
2025-07-15 16:23 ` Danilo Krummrich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DBCR5IFQFMUU.23UNP95G4NKWA@kernel.org \
--to=lossin@kernel.org \
--cc=Liam.Howlett@oracle.com \
--cc=a.hindborg@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=aliceryhl@google.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tamird@gmail.com \
--cc=tmgross@umich.edu \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.