From: Danilo Krummrich <dakr@kernel.org>
To: Boqun Feng <boqun.feng@gmail.com>
Cc: ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com,
gary@garyguo.net, 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 v9 07/29] rust: alloc: add module `allocator_test`
Date: Tue, 8 Oct 2024 16:28:38 +0200 [thread overview]
Message-ID: <ZwVBliUmvM_1P4a2@cassiopeiae> (raw)
In-Reply-To: <ZwUvT4Zsg-1Dww8b@boqun-archlinux>
On Tue, Oct 08, 2024 at 06:10:39AM -0700, Boqun Feng wrote:
> On Fri, Oct 04, 2024 at 05:41:11PM +0200, Danilo Krummrich wrote:
> > `Allocator`s, such as `Kmalloc`, will be used by e.g. `Box` and `Vec` in
> > subsequent patches, and hence this dependency propagates throughout the
> > whole kernel.
> >
> > Add the `allocator_test` module that provides an empty implementation
> > for all `Allocator`s in the kernel, such that we don't break the
> > `rusttest` make target in subsequent patches.
> >
> > Reviewed-by: Alice Ryhl <aliceryhl@google.com>
> > Reviewed-by: Benno Lossin <benno.lossin@proton.me>
> > Reviewed-by: Gary Guo <gary@garyguo.net>
> > Signed-off-by: Danilo Krummrich <dakr@kernel.org>
> > ---
> > rust/kernel/alloc.rs | 9 +++++++--
> > rust/kernel/alloc/allocator_test.rs | 19 +++++++++++++++++++
> > 2 files changed, 26 insertions(+), 2 deletions(-)
> > create mode 100644 rust/kernel/alloc/allocator_test.rs
> >
> > diff --git a/rust/kernel/alloc.rs b/rust/kernel/alloc.rs
> > index 91b2a26faf3d..f8ddc8d96da9 100644
> > --- a/rust/kernel/alloc.rs
> > +++ b/rust/kernel/alloc.rs
> > @@ -2,12 +2,17 @@
> >
> > //! Extensions to the [`alloc`] crate.
> >
> > -#[cfg(not(test))]
> > -#[cfg(not(testlib))]
> > +#[cfg(not(any(test, testlib)))]
> > pub mod allocator;
> > pub mod box_ext;
> > pub mod vec_ext;
> >
> > +#[cfg(any(test, testlib))]
> > +pub mod allocator_test;
> > +
> > +#[cfg(any(test, testlib))]
> > +pub use self::allocator_test as allocator;
> > +
> > /// Indicates an allocation error.
> > #[derive(Copy, Clone, PartialEq, Eq, Debug)]
> > pub struct AllocError;
> > diff --git a/rust/kernel/alloc/allocator_test.rs b/rust/kernel/alloc/allocator_test.rs
> > new file mode 100644
> > index 000000000000..4785efc474a7
> > --- /dev/null
> > +++ b/rust/kernel/alloc/allocator_test.rs
> > @@ -0,0 +1,19 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +#![allow(missing_docs)]
> > +
> > +use super::{AllocError, Allocator, Flags};
> > +use core::alloc::Layout;
> > +use core::ptr::NonNull;
> > +
> > +pub struct Kmalloc;
> > +
> > +unsafe impl Allocator for Kmalloc {
> > + unsafe fn realloc(
> > + _ptr: Option<NonNull<u8>>,
> > + _layout: Layout,
>
> The `old_layout` parameter is missing here.
Thanks, good catch.
diff --git a/rust/kernel/alloc.rs b/rust/kernel/alloc.rs
index f8ddc8d96da9..28281d600492 100644
--- a/rust/kernel/alloc.rs
+++ b/rust/kernel/alloc.rs
@@ -193,6 +193,7 @@ unsafe fn free(ptr: NonNull<u8>, layout: Layout) {
}
}
+#[allow(dead_code)]
/// Returns a properly aligned dangling pointer from the given `layout`.
pub(crate) fn dangling_from_layout(layout: Layout) -> NonNull<u8> {
let ptr = layout.align() as *mut u8;
diff --git a/rust/kernel/alloc/allocator_test.rs b/rust/kernel/alloc/allocator_test.rs
index 4785efc474a7..c5d325506f0c 100644
--- a/rust/kernel/alloc/allocator_test.rs
+++ b/rust/kernel/alloc/allocator_test.rs
@@ -12,6 +12,7 @@ unsafe impl Allocator for Kmalloc {
unsafe fn realloc(
_ptr: Option<NonNull<u8>>,
_layout: Layout,
+ _old_layout: Layout,
_flags: Flags,
) -> Result<NonNull<[u8]>, AllocError> {
panic!();
We also have to fix an intermediate dead code warning for `dangling_from_layout`
in the `rusttest` target, until we start using it when we implement `Cmalloc`
in this module.
next prev parent reply other threads:[~2024-10-08 14:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-04 15:41 [PATCH v9 00/29] Generic `Allocator` support for Rust Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 01/29] rust: alloc: add `Allocator` trait Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 02/29] rust: alloc: separate `aligned_size` from `krealloc_aligned` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 03/29] rust: alloc: rename `KernelAllocator` to `Kmalloc` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 04/29] rust: alloc: implement `ReallocFunc` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 05/29] rust: alloc: make `allocator` module public Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 06/29] rust: alloc: implement `Allocator` for `Kmalloc` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 07/29] rust: alloc: add module `allocator_test` Danilo Krummrich
2024-10-08 13:10 ` Boqun Feng
2024-10-08 14:28 ` Danilo Krummrich [this message]
2024-10-04 15:41 ` [PATCH v9 08/29] rust: alloc: implement `Vmalloc` allocator Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 09/29] rust: alloc: implement `KVmalloc` allocator Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 10/29] rust: alloc: add __GFP_NOWARN to `Flags` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 11/29] rust: alloc: implement kernel `Box` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 12/29] rust: treewide: switch to our kernel `Box` type Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 13/29] rust: alloc: remove extension of std's `Box` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 14/29] rust: alloc: add `Box` to prelude Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 15/29] rust: alloc: introduce `ArrayLayout` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 16/29] rust: alloc: implement kernel `Vec` type Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 17/29] rust: alloc: implement `IntoIterator` for `Vec` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 18/29] rust: alloc: implement `collect` for `IntoIter` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 19/29] rust: treewide: switch to the kernel `Vec` type Danilo Krummrich
2024-10-07 14:34 ` Alice Ryhl
2024-10-07 15:21 ` Danilo Krummrich
2024-10-07 19:41 ` Miguel Ojeda
2024-10-04 15:41 ` [PATCH v9 20/29] rust: alloc: remove `VecExt` extension Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 21/29] rust: alloc: add `Vec` to prelude Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 22/29] rust: error: use `core::alloc::LayoutError` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 23/29] rust: error: check for config `test` in `Error::name` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 24/29] rust: alloc: implement `contains` for `Flags` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 25/29] rust: alloc: implement `Cmalloc` in module allocator_test Danilo Krummrich
2024-10-08 14:32 ` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 26/29] rust: str: test: replace `alloc::format` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 27/29] rust: alloc: update module comment of alloc.rs Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 28/29] kbuild: rust: remove the `alloc` crate and `GlobalAlloc` Danilo Krummrich
2024-10-04 15:41 ` [PATCH v9 29/29] MAINTAINERS: add entry for the Rust `alloc` module Danilo Krummrich
2024-10-15 21:13 ` [PATCH v9 00/29] Generic `Allocator` support for Rust Miguel Ojeda
2024-11-15 11:32 ` Asahi Lina
2024-11-15 14:00 ` Alice Ryhl
2024-11-16 14:21 ` Janne Grunau
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=ZwVBliUmvM_1P4a2@cassiopeiae \
--to=dakr@kernel.org \
--cc=a.hindborg@samsung.com \
--cc=airlied@redhat.com \
--cc=ajanulgu@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=boris.brezillon@collabora.com \
--cc=cjia@nvidia.com \
--cc=daniel.almeida@collabora.com \
--cc=faith.ekstrand@collabora.com \
--cc=gary@garyguo.net \
--cc=jhubbard@nvidia.com \
--cc=lina@asahilina.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lyude@redhat.com \
--cc=mcanal@igalia.com \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=wedsonaf@gmail.com \
--cc=zhiw@nvidia.com \
/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.