Messages in this thread Patch in this message | | | Date | Fri, 29 Mar 2024 16:23:42 -0700 | From | Boqun Feng <> | Subject | Re: [PATCH v3 00/10] Allocation APIs |
| |
On Fri, Mar 29, 2024 at 11:25:00AM -0700, Boqun Feng wrote: > On Wed, Mar 27, 2024 at 10:35:53PM -0300, Wedson Almeida Filho wrote: > > From: Wedson Almeida Filho <walmeida@microsoft.com> > > > > Revamp how we use the `alloc` crate. > > > > We currently have a fork of the crate with changes to `Vec`; other > > changes have been upstreamed (to the Rust project). This series removes > > the fork and exposes all the functionality as extension traits. > > > > Additionally, it also introduces allocation flag parameters to all > > functions that may result in allocations (e.g., `Box::new`, `Arc::new`, > > `Vec::push`, etc.) without the `try_` prefix -- the names are available > > because we build `alloc` with `no_global_oom_handling`. > > > > Lastly, the series also removes our reliance on the `allocator_api` > > unstable feature. > > > > Long term, we still want to make such functionality available in > > upstream Rust, but this allows us to make progress now and reduces our > > maintainance burden. > > > > In summary: > > 1. Removes `alloc` fork > > 2. Removes use of `allocator_api` unstable feature > > 3. Introduces flags (e.g., GFP_KERNEL, GFP_ATOMIC) when allocating > > > > --- > > > > FWIW, I've put this into rust-dev: > > https://github.com/Rust-for-Linux/linux rust-dev > > a few adjustments are needed to work with other commits that have been > queued in rust-dev, so I add an commit on the top for everyone's > reference. (Besides this commit, I also removed all updates to our own > alloc in Miguel's 1.77.0 compiler version bump patch) > > Regards, > Boqun
As Miguel pointed out offline, the following is also needed:
diff --git a/rust/kernel/file.rs b/rust/kernel/file.rs index a5930f0f2bc5..bf68a0ce9f14 100644 --- a/rust/kernel/file.rs +++ b/rust/kernel/file.rs @@ -350,7 +350,7 @@ impl DeferredFdCloser { pub fn new() -> Result<Self, AllocError> { Ok(Self { // INVARIANT: The `file` pointer is null, so the type invariant does not apply. - inner: Box::new( + inner: <Box<_> as BoxExt<_>>::new( DeferredFdCloserInner { twork: mem::MaybeUninit::uninit(), file: core::ptr::null_mut(),
| |