All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Alice Ryhl <aliceryhl@google.com>,
	Benno Lossin <benno.lossin@proton.me>,
	Gary Guo <gary@garyguo.net>, Danilo Krummrich <dakr@kernel.org>,
	Miguel Ojeda <ojeda@kernel.org>
Subject: [PATCH 6.12 042/269] rust: treewide: switch to our kernel `Box` type
Date: Mon, 10 Mar 2025 18:03:15 +0100	[thread overview]
Message-ID: <20250310170459.399557015@linuxfoundation.org> (raw)
In-Reply-To: <20250310170457.700086763@linuxfoundation.org>

6.12-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Danilo Krummrich <dakr@kernel.org>

commit 8373147ce4961665c5700016b1c76299e962d077 upstream.

Now that we got the kernel `Box` type in place, convert all existing
`Box` users to make use of it.

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>
Link: https://lore.kernel.org/r/20241004154149.93856-13-dakr@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/block/rnull.rs            |    4 +-
 rust/kernel/init.rs               |   51 +++++++++++++++++++-------------------
 rust/kernel/init/__internal.rs    |    2 -
 rust/kernel/rbtree.rs             |   49 ++++++++++++++++++++----------------
 rust/kernel/sync/arc.rs           |   17 +++++-------
 rust/kernel/sync/condvar.rs       |    4 +-
 rust/kernel/sync/lock/mutex.rs    |    2 -
 rust/kernel/sync/lock/spinlock.rs |    2 -
 rust/kernel/workqueue.rs          |   20 +++++++-------
 rust/macros/lib.rs                |    6 ++--
 10 files changed, 81 insertions(+), 76 deletions(-)

--- a/drivers/block/rnull.rs
+++ b/drivers/block/rnull.rs
@@ -32,7 +32,7 @@ module! {
 }
 
 struct NullBlkModule {
-    _disk: Pin<Box<Mutex<GenDisk<NullBlkDevice>>>>,
+    _disk: Pin<KBox<Mutex<GenDisk<NullBlkDevice>>>>,
 }
 
 impl kernel::Module for NullBlkModule {
@@ -47,7 +47,7 @@ impl kernel::Module for NullBlkModule {
             .rotational(false)
             .build(format_args!("rnullb{}", 0), tagset)?;
 
-        let disk = Box::pin_init(new_mutex!(disk, "nullb:disk"), flags::GFP_KERNEL)?;
+        let disk = KBox::pin_init(new_mutex!(disk, "nullb:disk"), flags::GFP_KERNEL)?;
 
         Ok(Self { _disk: disk })
     }
--- a/rust/kernel/init.rs
+++ b/rust/kernel/init.rs
@@ -13,7 +13,7 @@
 //! To initialize a `struct` with an in-place constructor you will need two things:
 //! - an in-place constructor,
 //! - a memory location that can hold your `struct` (this can be the [stack], an [`Arc<T>`],
-//!   [`UniqueArc<T>`], [`Box<T>`] or any other smart pointer that implements [`InPlaceInit`]).
+//!   [`UniqueArc<T>`], [`KBox<T>`] or any other smart pointer that implements [`InPlaceInit`]).
 //!
 //! To get an in-place constructor there are generally three options:
 //! - directly creating an in-place constructor using the [`pin_init!`] macro,
@@ -68,7 +68,7 @@
 //! #     a <- new_mutex!(42, "Foo::a"),
 //! #     b: 24,
 //! # });
-//! let foo: Result<Pin<Box<Foo>>> = Box::pin_init(foo, GFP_KERNEL);
+//! let foo: Result<Pin<KBox<Foo>>> = KBox::pin_init(foo, GFP_KERNEL);
 //! ```
 //!
 //! For more information see the [`pin_init!`] macro.
@@ -92,14 +92,14 @@
 //! struct DriverData {
 //!     #[pin]
 //!     status: Mutex<i32>,
-//!     buffer: Box<[u8; 1_000_000]>,
+//!     buffer: KBox<[u8; 1_000_000]>,
 //! }
 //!
 //! impl DriverData {
 //!     fn new() -> impl PinInit<Self, Error> {
 //!         try_pin_init!(Self {
 //!             status <- new_mutex!(0, "DriverData::status"),
-//!             buffer: Box::init(kernel::init::zeroed(), GFP_KERNEL)?,
+//!             buffer: KBox::init(kernel::init::zeroed(), GFP_KERNEL)?,
 //!         })
 //!     }
 //! }
@@ -211,7 +211,7 @@
 //! [`pin_init!`]: crate::pin_init!
 
 use crate::{
-    alloc::{box_ext::BoxExt, AllocError, Flags},
+    alloc::{box_ext::BoxExt, AllocError, Flags, KBox},
     error::{self, Error},
     sync::Arc,
     sync::UniqueArc,
@@ -298,7 +298,7 @@ macro_rules! stack_pin_init {
 /// struct Foo {
 ///     #[pin]
 ///     a: Mutex<usize>,
-///     b: Box<Bar>,
+///     b: KBox<Bar>,
 /// }
 ///
 /// struct Bar {
@@ -307,7 +307,7 @@ macro_rules! stack_pin_init {
 ///
 /// stack_try_pin_init!(let foo: Result<Pin<&mut Foo>, AllocError> = pin_init!(Foo {
 ///     a <- new_mutex!(42),
-///     b: Box::new(Bar {
+///     b: KBox::new(Bar {
 ///         x: 64,
 ///     }, GFP_KERNEL)?,
 /// }));
@@ -324,7 +324,7 @@ macro_rules! stack_pin_init {
 /// struct Foo {
 ///     #[pin]
 ///     a: Mutex<usize>,
-///     b: Box<Bar>,
+///     b: KBox<Bar>,
 /// }
 ///
 /// struct Bar {
@@ -333,7 +333,7 @@ macro_rules! stack_pin_init {
 ///
 /// stack_try_pin_init!(let foo: Pin<&mut Foo> =? pin_init!(Foo {
 ///     a <- new_mutex!(42),
-///     b: Box::new(Bar {
+///     b: KBox::new(Bar {
 ///         x: 64,
 ///     }, GFP_KERNEL)?,
 /// }));
@@ -391,7 +391,7 @@ macro_rules! stack_try_pin_init {
 ///     },
 /// });
 /// # initializer }
-/// # Box::pin_init(demo(), GFP_KERNEL).unwrap();
+/// # KBox::pin_init(demo(), GFP_KERNEL).unwrap();
 /// ```
 ///
 /// Arbitrary Rust expressions can be used to set the value of a variable.
@@ -460,7 +460,7 @@ macro_rules! stack_try_pin_init {
 /// #         })
 /// #     }
 /// # }
-/// let foo = Box::pin_init(Foo::new(), GFP_KERNEL);
+/// let foo = KBox::pin_init(Foo::new(), GFP_KERNEL);
 /// ```
 ///
 /// They can also easily embed it into their own `struct`s:
@@ -592,7 +592,7 @@ macro_rules! pin_init {
 /// use kernel::{init::{self, PinInit}, error::Error};
 /// #[pin_data]
 /// struct BigBuf {
-///     big: Box<[u8; 1024 * 1024 * 1024]>,
+///     big: KBox<[u8; 1024 * 1024 * 1024]>,
 ///     small: [u8; 1024 * 1024],
 ///     ptr: *mut u8,
 /// }
@@ -600,7 +600,7 @@ macro_rules! pin_init {
 /// impl BigBuf {
 ///     fn new() -> impl PinInit<Self, Error> {
 ///         try_pin_init!(Self {
-///             big: Box::init(init::zeroed(), GFP_KERNEL)?,
+///             big: KBox::init(init::zeroed(), GFP_KERNEL)?,
 ///             small: [0; 1024 * 1024],
 ///             ptr: core::ptr::null_mut(),
 ///         }? Error)
@@ -692,16 +692,16 @@ macro_rules! init {
 /// # Examples
 ///
 /// ```rust
-/// use kernel::{init::{PinInit, zeroed}, error::Error};
+/// use kernel::{alloc::KBox, init::{PinInit, zeroed}, error::Error};
 /// struct BigBuf {
-///     big: Box<[u8; 1024 * 1024 * 1024]>,
+///     big: KBox<[u8; 1024 * 1024 * 1024]>,
 ///     small: [u8; 1024 * 1024],
 /// }
 ///
 /// impl BigBuf {
 ///     fn new() -> impl Init<Self, Error> {
 ///         try_init!(Self {
-///             big: Box::init(zeroed(), GFP_KERNEL)?,
+///             big: KBox::init(zeroed(), GFP_KERNEL)?,
 ///             small: [0; 1024 * 1024],
 ///         }? Error)
 ///     }
@@ -812,8 +812,8 @@ macro_rules! assert_pinned {
 /// A pin-initializer for the type `T`.
 ///
 /// To use this initializer, you will need a suitable memory location that can hold a `T`. This can
-/// be [`Box<T>`], [`Arc<T>`], [`UniqueArc<T>`] or even the stack (see [`stack_pin_init!`]). Use the
-/// [`InPlaceInit::pin_init`] function of a smart pointer like [`Arc<T>`] on this.
+/// be [`KBox<T>`], [`Arc<T>`], [`UniqueArc<T>`] or even the stack (see [`stack_pin_init!`]). Use
+/// the [`InPlaceInit::pin_init`] function of a smart pointer like [`Arc<T>`] on this.
 ///
 /// Also see the [module description](self).
 ///
@@ -893,7 +893,7 @@ pub unsafe trait PinInit<T: ?Sized, E =
 }
 
 /// An initializer returned by [`PinInit::pin_chain`].
-pub struct ChainPinInit<I, F, T: ?Sized, E>(I, F, __internal::Invariant<(E, Box<T>)>);
+pub struct ChainPinInit<I, F, T: ?Sized, E>(I, F, __internal::Invariant<(E, KBox<T>)>);
 
 // SAFETY: The `__pinned_init` function is implemented such that it
 // - returns `Ok(())` on successful initialization,
@@ -919,8 +919,8 @@ where
 /// An initializer for `T`.
 ///
 /// To use this initializer, you will need a suitable memory location that can hold a `T`. This can
-/// be [`Box<T>`], [`Arc<T>`], [`UniqueArc<T>`] or even the stack (see [`stack_pin_init!`]). Use the
-/// [`InPlaceInit::init`] function of a smart pointer like [`Arc<T>`] on this. Because
+/// be [`KBox<T>`], [`Arc<T>`], [`UniqueArc<T>`] or even the stack (see [`stack_pin_init!`]). Use
+/// the [`InPlaceInit::init`] function of a smart pointer like [`Arc<T>`] on this. Because
 /// [`PinInit<T, E>`] is a super trait, you can use every function that takes it as well.
 ///
 /// Also see the [module description](self).
@@ -992,7 +992,7 @@ pub unsafe trait Init<T: ?Sized, E = Inf
 }
 
 /// An initializer returned by [`Init::chain`].
-pub struct ChainInit<I, F, T: ?Sized, E>(I, F, __internal::Invariant<(E, Box<T>)>);
+pub struct ChainInit<I, F, T: ?Sized, E>(I, F, __internal::Invariant<(E, KBox<T>)>);
 
 // SAFETY: The `__init` function is implemented such that it
 // - returns `Ok(())` on successful initialization,
@@ -1076,8 +1076,9 @@ pub fn uninit<T, E>() -> impl Init<Maybe
 /// # Examples
 ///
 /// ```rust
-/// use kernel::{error::Error, init::init_array_from_fn};
-/// let array: Box<[usize; 1_000]> = Box::init::<Error>(init_array_from_fn(|i| i), GFP_KERNEL).unwrap();
+/// use kernel::{alloc::KBox, error::Error, init::init_array_from_fn};
+/// let array: KBox<[usize; 1_000]> =
+///     KBox::init::<Error>(init_array_from_fn(|i| i), GFP_KERNEL).unwrap();
 /// assert_eq!(array.len(), 1_000);
 /// ```
 pub fn init_array_from_fn<I, const N: usize, T, E>(
@@ -1453,7 +1454,7 @@ impl_zeroable! {
     //
     // In this case we are allowed to use `T: ?Sized`, since all zeros is the `None` variant.
     {<T: ?Sized>} Option<NonNull<T>>,
-    {<T: ?Sized>} Option<Box<T>>,
+    {<T: ?Sized>} Option<KBox<T>>,
 
     // SAFETY: `null` pointer is valid.
     //
--- a/rust/kernel/init/__internal.rs
+++ b/rust/kernel/init/__internal.rs
@@ -105,7 +105,7 @@ pub unsafe trait InitData: Copy {
     }
 }
 
-pub struct AllData<T: ?Sized>(PhantomData<fn(Box<T>) -> Box<T>>);
+pub struct AllData<T: ?Sized>(PhantomData<fn(KBox<T>) -> KBox<T>>);
 
 impl<T: ?Sized> Clone for AllData<T> {
     fn clone(&self) -> Self {
--- a/rust/kernel/rbtree.rs
+++ b/rust/kernel/rbtree.rs
@@ -7,7 +7,6 @@
 //! Reference: <https://docs.kernel.org/core-api/rbtree.html>
 
 use crate::{alloc::Flags, bindings, container_of, error::Result, prelude::*};
-use alloc::boxed::Box;
 use core::{
     cmp::{Ord, Ordering},
     marker::PhantomData,
@@ -497,7 +496,7 @@ impl<K, V> Drop for RBTree<K, V> {
             // but it is not observable. The loop invariant is still maintained.
 
             // SAFETY: `this` is valid per the loop invariant.
-            unsafe { drop(Box::from_raw(this.cast_mut())) };
+            unsafe { drop(KBox::from_raw(this.cast_mut())) };
         }
     }
 }
@@ -764,7 +763,7 @@ impl<'a, K, V> Cursor<'a, K, V> {
         // point to the links field of `Node<K, V>` objects.
         let this = unsafe { container_of!(self.current.as_ptr(), Node<K, V>, links) }.cast_mut();
         // SAFETY: `this` is valid by the type invariants as described above.
-        let node = unsafe { Box::from_raw(this) };
+        let node = unsafe { KBox::from_raw(this) };
         let node = RBTreeNode { node };
         // SAFETY: The reference to the tree used to create the cursor outlives the cursor, so
         // the tree cannot change. By the tree invariant, all nodes are valid.
@@ -809,7 +808,7 @@ impl<'a, K, V> Cursor<'a, K, V> {
             // point to the links field of `Node<K, V>` objects.
             let this = unsafe { container_of!(neighbor, Node<K, V>, links) }.cast_mut();
             // SAFETY: `this` is valid by the type invariants as described above.
-            let node = unsafe { Box::from_raw(this) };
+            let node = unsafe { KBox::from_raw(this) };
             return Some(RBTreeNode { node });
         }
         None
@@ -1038,7 +1037,7 @@ impl<K, V> Iterator for IterRaw<K, V> {
 /// It contains the memory needed to hold a node that can be inserted into a red-black tree. One
 /// can be obtained by directly allocating it ([`RBTreeNodeReservation::new`]).
 pub struct RBTreeNodeReservation<K, V> {
-    node: Box<MaybeUninit<Node<K, V>>>,
+    node: KBox<MaybeUninit<Node<K, V>>>,
 }
 
 impl<K, V> RBTreeNodeReservation<K, V> {
@@ -1046,7 +1045,7 @@ impl<K, V> RBTreeNodeReservation<K, V> {
     /// call to [`RBTree::insert`].
     pub fn new(flags: Flags) -> Result<RBTreeNodeReservation<K, V>> {
         Ok(RBTreeNodeReservation {
-            node: <Box<_> as BoxExt<_>>::new_uninit(flags)?,
+            node: KBox::new_uninit(flags)?,
         })
     }
 }
@@ -1062,14 +1061,15 @@ impl<K, V> RBTreeNodeReservation<K, V> {
     /// Initialises a node reservation.
     ///
     /// It then becomes an [`RBTreeNode`] that can be inserted into a tree.
-    pub fn into_node(mut self, key: K, value: V) -> RBTreeNode<K, V> {
-        self.node.write(Node {
-            key,
-            value,
-            links: bindings::rb_node::default(),
-        });
-        // SAFETY: We just wrote to it.
-        let node = unsafe { self.node.assume_init() };
+    pub fn into_node(self, key: K, value: V) -> RBTreeNode<K, V> {
+        let node = KBox::write(
+            self.node,
+            Node {
+                key,
+                value,
+                links: bindings::rb_node::default(),
+            },
+        );
         RBTreeNode { node }
     }
 }
@@ -1079,7 +1079,7 @@ impl<K, V> RBTreeNodeReservation<K, V> {
 /// The node is fully initialised (with key and value) and can be inserted into a tree without any
 /// extra allocations or failure paths.
 pub struct RBTreeNode<K, V> {
-    node: Box<Node<K, V>>,
+    node: KBox<Node<K, V>>,
 }
 
 impl<K, V> RBTreeNode<K, V> {
@@ -1091,7 +1091,9 @@ impl<K, V> RBTreeNode<K, V> {
 
     /// Get the key and value from inside the node.
     pub fn to_key_value(self) -> (K, V) {
-        (self.node.key, self.node.value)
+        let node = KBox::into_inner(self.node);
+
+        (node.key, node.value)
     }
 }
 
@@ -1113,7 +1115,7 @@ impl<K, V> RBTreeNode<K, V> {
     /// may be freed (but only for the key/value; memory for the node itself is kept for reuse).
     pub fn into_reservation(self) -> RBTreeNodeReservation<K, V> {
         RBTreeNodeReservation {
-            node: Box::drop_contents(self.node),
+            node: KBox::drop_contents(self.node),
         }
     }
 }
@@ -1164,7 +1166,7 @@ impl<'a, K, V> RawVacantEntry<'a, K, V>
     /// The `node` must have a key such that inserting it here does not break the ordering of this
     /// [`RBTree`].
     fn insert(self, node: RBTreeNode<K, V>) -> &'a mut V {
-        let node = Box::into_raw(node.node);
+        let node = KBox::into_raw(node.node);
 
         // SAFETY: `node` is valid at least until we call `Box::from_raw`, which only happens when
         // the node is removed or replaced.
@@ -1238,21 +1240,24 @@ impl<'a, K, V> OccupiedEntry<'a, K, V> {
             // SAFETY: The node was a node in the tree, but we removed it, so we can convert it
             // back into a box.
             node: unsafe {
-                Box::from_raw(container_of!(self.node_links, Node<K, V>, links).cast_mut())
+                KBox::from_raw(container_of!(self.node_links, Node<K, V>, links).cast_mut())
             },
         }
     }
 
     /// Takes the value of the entry out of the map, and returns it.
     pub fn remove(self) -> V {
-        self.remove_node().node.value
+        let rb_node = self.remove_node();
+        let node = KBox::into_inner(rb_node.node);
+
+        node.value
     }
 
     /// Swap the current node for the provided node.
     ///
     /// The key of both nodes must be equal.
     fn replace(self, node: RBTreeNode<K, V>) -> RBTreeNode<K, V> {
-        let node = Box::into_raw(node.node);
+        let node = KBox::into_raw(node.node);
 
         // SAFETY: `node` is valid at least until we call `Box::from_raw`, which only happens when
         // the node is removed or replaced.
@@ -1268,7 +1273,7 @@ impl<'a, K, V> OccupiedEntry<'a, K, V> {
         // - `self.node_ptr` produces a valid pointer to a node in the tree.
         // - Now that we removed this entry from the tree, we can convert the node to a box.
         let old_node =
-            unsafe { Box::from_raw(container_of!(self.node_links, Node<K, V>, links).cast_mut()) };
+            unsafe { KBox::from_raw(container_of!(self.node_links, Node<K, V>, links).cast_mut()) };
 
         RBTreeNode { node: old_node }
     }
--- a/rust/kernel/sync/arc.rs
+++ b/rust/kernel/sync/arc.rs
@@ -17,13 +17,12 @@
 //! [`Arc`]: https://doc.rust-lang.org/std/sync/struct.Arc.html
 
 use crate::{
-    alloc::{box_ext::BoxExt, AllocError, Flags},
+    alloc::{AllocError, Flags, KBox},
     bindings,
     init::{self, InPlaceInit, Init, PinInit},
     try_init,
     types::{ForeignOwnable, Opaque},
 };
-use alloc::boxed::Box;
 use core::{
     alloc::Layout,
     fmt,
@@ -201,11 +200,11 @@ impl<T> Arc<T> {
             data: contents,
         };
 
-        let inner = <Box<_> as BoxExt<_>>::new(value, flags)?;
+        let inner = KBox::new(value, flags)?;
 
         // SAFETY: We just created `inner` with a reference count of 1, which is owned by the new
         // `Arc` object.
-        Ok(unsafe { Self::from_inner(Box::leak(inner).into()) })
+        Ok(unsafe { Self::from_inner(KBox::leak(inner).into()) })
     }
 }
 
@@ -398,8 +397,8 @@ impl<T: ?Sized> Drop for Arc<T> {
         if is_zero {
             // The count reached zero, we must free the memory.
             //
-            // SAFETY: The pointer was initialised from the result of `Box::leak`.
-            unsafe { drop(Box::from_raw(self.ptr.as_ptr())) };
+            // SAFETY: The pointer was initialised from the result of `KBox::leak`.
+            unsafe { drop(KBox::from_raw(self.ptr.as_ptr())) };
         }
     }
 }
@@ -641,7 +640,7 @@ impl<T> UniqueArc<T> {
     /// Tries to allocate a new [`UniqueArc`] instance whose contents are not initialised yet.
     pub fn new_uninit(flags: Flags) -> Result<UniqueArc<MaybeUninit<T>>, AllocError> {
         // INVARIANT: The refcount is initialised to a non-zero value.
-        let inner = Box::try_init::<AllocError>(
+        let inner = KBox::try_init::<AllocError>(
             try_init!(ArcInner {
                 // SAFETY: There are no safety requirements for this FFI call.
                 refcount: Opaque::new(unsafe { bindings::REFCOUNT_INIT(1) }),
@@ -651,8 +650,8 @@ impl<T> UniqueArc<T> {
         )?;
         Ok(UniqueArc {
             // INVARIANT: The newly-created object has a refcount of 1.
-            // SAFETY: The pointer from the `Box` is valid.
-            inner: unsafe { Arc::from_inner(Box::leak(inner).into()) },
+            // SAFETY: The pointer from the `KBox` is valid.
+            inner: unsafe { Arc::from_inner(KBox::leak(inner).into()) },
         })
     }
 }
--- a/rust/kernel/sync/condvar.rs
+++ b/rust/kernel/sync/condvar.rs
@@ -70,8 +70,8 @@ pub use new_condvar;
 /// }
 ///
 /// /// Allocates a new boxed `Example`.
-/// fn new_example() -> Result<Pin<Box<Example>>> {
-///     Box::pin_init(pin_init!(Example {
+/// fn new_example() -> Result<Pin<KBox<Example>>> {
+///     KBox::pin_init(pin_init!(Example {
 ///         value <- new_mutex!(0),
 ///         value_changed <- new_condvar!(),
 ///     }), GFP_KERNEL)
--- a/rust/kernel/sync/lock/mutex.rs
+++ b/rust/kernel/sync/lock/mutex.rs
@@ -58,7 +58,7 @@ pub use new_mutex;
 /// }
 ///
 /// // Allocate a boxed `Example`.
-/// let e = Box::pin_init(Example::new(), GFP_KERNEL)?;
+/// let e = KBox::pin_init(Example::new(), GFP_KERNEL)?;
 /// assert_eq!(e.c, 10);
 /// assert_eq!(e.d.lock().a, 20);
 /// assert_eq!(e.d.lock().b, 30);
--- a/rust/kernel/sync/lock/spinlock.rs
+++ b/rust/kernel/sync/lock/spinlock.rs
@@ -56,7 +56,7 @@ pub use new_spinlock;
 /// }
 ///
 /// // Allocate a boxed `Example`.
-/// let e = Box::pin_init(Example::new(), GFP_KERNEL)?;
+/// let e = KBox::pin_init(Example::new(), GFP_KERNEL)?;
 /// assert_eq!(e.c, 10);
 /// assert_eq!(e.d.lock().a, 20);
 /// assert_eq!(e.d.lock().b, 30);
--- a/rust/kernel/workqueue.rs
+++ b/rust/kernel/workqueue.rs
@@ -216,7 +216,7 @@ impl Queue {
             func: Some(func),
         });
 
-        self.enqueue(Box::pin_init(init, flags).map_err(|_| AllocError)?);
+        self.enqueue(KBox::pin_init(init, flags).map_err(|_| AllocError)?);
         Ok(())
     }
 }
@@ -239,9 +239,9 @@ impl<T> ClosureWork<T> {
 }
 
 impl<T: FnOnce()> WorkItem for ClosureWork<T> {
-    type Pointer = Pin<Box<Self>>;
+    type Pointer = Pin<KBox<Self>>;
 
-    fn run(mut this: Pin<Box<Self>>) {
+    fn run(mut this: Pin<KBox<Self>>) {
         if let Some(func) = this.as_mut().project().take() {
             (func)()
         }
@@ -297,7 +297,7 @@ pub unsafe trait RawWorkItem<const ID: u
 
 /// Defines the method that should be called directly when a work item is executed.
 ///
-/// This trait is implemented by `Pin<Box<T>>` and [`Arc<T>`], and is mainly intended to be
+/// This trait is implemented by `Pin<KBox<T>>` and [`Arc<T>`], and is mainly intended to be
 /// implemented for smart pointer types. For your own structs, you would implement [`WorkItem`]
 /// instead. The [`run`] method on this trait will usually just perform the appropriate
 /// `container_of` translation and then call into the [`run`][WorkItem::run] method from the
@@ -329,7 +329,7 @@ pub unsafe trait WorkItemPointer<const I
 /// This trait is used when the `work_struct` field is defined using the [`Work`] helper.
 pub trait WorkItem<const ID: u64 = 0> {
     /// The pointer type that this struct is wrapped in. This will typically be `Arc<Self>` or
-    /// `Pin<Box<Self>>`.
+    /// `Pin<KBox<Self>>`.
     type Pointer: WorkItemPointer<ID>;
 
     /// The method that should be called when this work item is executed.
@@ -567,7 +567,7 @@ where
 }
 
 // SAFETY: TODO.
-unsafe impl<T, const ID: u64> WorkItemPointer<ID> for Pin<Box<T>>
+unsafe impl<T, const ID: u64> WorkItemPointer<ID> for Pin<KBox<T>>
 where
     T: WorkItem<ID, Pointer = Self>,
     T: HasWork<T, ID>,
@@ -578,7 +578,7 @@ where
         // SAFETY: This computes the pointer that `__enqueue` got from `Arc::into_raw`.
         let ptr = unsafe { T::work_container_of(ptr) };
         // SAFETY: This pointer comes from `Arc::into_raw` and we've been given back ownership.
-        let boxed = unsafe { Box::from_raw(ptr) };
+        let boxed = unsafe { KBox::from_raw(ptr) };
         // SAFETY: The box was already pinned when it was enqueued.
         let pinned = unsafe { Pin::new_unchecked(boxed) };
 
@@ -587,7 +587,7 @@ where
 }
 
 // SAFETY: TODO.
-unsafe impl<T, const ID: u64> RawWorkItem<ID> for Pin<Box<T>>
+unsafe impl<T, const ID: u64> RawWorkItem<ID> for Pin<KBox<T>>
 where
     T: WorkItem<ID, Pointer = Self>,
     T: HasWork<T, ID>,
@@ -601,9 +601,9 @@ where
         // SAFETY: We're not going to move `self` or any of its fields, so its okay to temporarily
         // remove the `Pin` wrapper.
         let boxed = unsafe { Pin::into_inner_unchecked(self) };
-        let ptr = Box::into_raw(boxed);
+        let ptr = KBox::into_raw(boxed);
 
-        // SAFETY: Pointers into a `Box` point at a valid value.
+        // SAFETY: Pointers into a `KBox` point at a valid value.
         let work_ptr = unsafe { T::raw_get_work(ptr) };
         // SAFETY: `raw_get_work` returns a pointer to a valid value.
         let work_ptr = unsafe { Work::raw_get(work_ptr) };
--- a/rust/macros/lib.rs
+++ b/rust/macros/lib.rs
@@ -243,7 +243,7 @@ pub fn concat_idents(ts: TokenStream) ->
 /// struct DriverData {
 ///     #[pin]
 ///     queue: Mutex<Vec<Command>>,
-///     buf: Box<[u8; 1024 * 1024]>,
+///     buf: KBox<[u8; 1024 * 1024]>,
 /// }
 /// ```
 ///
@@ -252,7 +252,7 @@ pub fn concat_idents(ts: TokenStream) ->
 /// struct DriverData {
 ///     #[pin]
 ///     queue: Mutex<Vec<Command>>,
-///     buf: Box<[u8; 1024 * 1024]>,
+///     buf: KBox<[u8; 1024 * 1024]>,
 ///     raw_info: *mut Info,
 /// }
 ///
@@ -282,7 +282,7 @@ pub fn pin_data(inner: TokenStream, item
 /// struct DriverData {
 ///     #[pin]
 ///     queue: Mutex<Vec<Command>>,
-///     buf: Box<[u8; 1024 * 1024]>,
+///     buf: KBox<[u8; 1024 * 1024]>,
 ///     raw_info: *mut Info,
 /// }
 ///



  parent reply	other threads:[~2025-03-10 17:20 UTC|newest]

Thread overview: 282+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-10 17:02 [PATCH 6.12 000/269] 6.12.19-rc1 review Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 001/269] x86/amd_nb: Use rdmsr_safe() in amd_get_mmconfig_range() Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 002/269] rust: block: fix formatting in GenDisk doc Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 003/269] drm/i915/dsi: convert to struct intel_display Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 004/269] drm/i915/dsi: Use TRANS_DDI_FUNC_CTLs own port width macro Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 005/269] gpio: vf610: use generic device_get_match_data() Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 006/269] gpio: vf610: add locking to gpio direction functions Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 007/269] cifs: Remove symlink member from cifs_open_info_data union Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 008/269] smb311: failure to open files of length 1040 when mounting with SMB3.1.1 POSIX extensions Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 009/269] btrfs: fix data overwriting bug during buffered write when block size < page size Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 010/269] x86/microcode/AMD: Add some forgotten models to the SHA check Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 011/269] loongarch: Use ASM_REACHABLE Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 012/269] rust: workqueue: remove unneeded ``#[allow(clippy::new_ret_no_self)]` Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 013/269] rust: sort global Rust flags Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 014/269] rust: types: avoid repetition in `{As,From}Bytes` impls Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 015/269] rust: enable `clippy::undocumented_unsafe_blocks` lint Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 016/269] rust: enable `clippy::unnecessary_safety_comment` lint Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 017/269] rust: enable `clippy::unnecessary_safety_doc` lint Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 018/269] rust: enable `clippy::ignored_unit_patterns` lint Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 019/269] rust: enable `rustdoc::unescaped_backticks` lint Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 020/269] rust: init: remove unneeded `#[allow(clippy::disallowed_names)]` Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 021/269] rust: sync: remove unneeded `#[allow(clippy::non_send_fields_in_send_ty)]` Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 022/269] rust: introduce `.clippy.toml` Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 023/269] rust: replace `clippy::dbg_macro` with `disallowed_macros` Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 024/269] rust: provide proper code documentation titles Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 025/269] rust: enable Clippys `check-private-items` Greg Kroah-Hartman
2025-03-10 17:02 ` [PATCH 6.12 026/269] Documentation: rust: add coding guidelines on lints Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 027/269] rust: start using the `#[expect(...)]` attribute Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 028/269] Documentation: rust: discuss `#[expect(...)]` in the guidelines Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 029/269] rust: error: make conversion functions public Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 030/269] rust: error: optimize error type to use nonzero Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 031/269] rust: alloc: add `Allocator` trait Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 032/269] rust: alloc: separate `aligned_size` from `krealloc_aligned` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 033/269] rust: alloc: rename `KernelAllocator` to `Kmalloc` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 034/269] rust: alloc: implement `ReallocFunc` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 035/269] rust: alloc: make `allocator` module public Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 036/269] rust: alloc: implement `Allocator` for `Kmalloc` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 037/269] rust: alloc: add module `allocator_test` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 038/269] rust: alloc: implement `Vmalloc` allocator Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 039/269] rust: alloc: implement `KVmalloc` allocator Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 040/269] rust: alloc: add __GFP_NOWARN to `Flags` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 041/269] rust: alloc: implement kernel `Box` Greg Kroah-Hartman
2025-03-10 17:03 ` Greg Kroah-Hartman [this message]
2025-03-10 17:03 ` [PATCH 6.12 043/269] rust: alloc: remove extension of stds `Box` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 044/269] rust: alloc: add `Box` to prelude Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 045/269] rust: alloc: introduce `ArrayLayout` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 046/269] rust: alloc: implement kernel `Vec` type Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 047/269] rust: alloc: implement `IntoIterator` for `Vec` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 048/269] rust: alloc: implement `collect` for `IntoIter` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 049/269] rust: treewide: switch to the kernel `Vec` type Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 050/269] rust: alloc: remove `VecExt` extension Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 051/269] rust: alloc: add `Vec` to prelude Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 052/269] rust: error: use `core::alloc::LayoutError` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 053/269] rust: error: check for config `test` in `Error::name` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 054/269] rust: alloc: implement `contains` for `Flags` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 055/269] rust: alloc: implement `Cmalloc` in module allocator_test Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 056/269] rust: str: test: replace `alloc::format` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 057/269] rust: alloc: update module comment of alloc.rs Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 058/269] kbuild: rust: remove the `alloc` crate and `GlobalAlloc` Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 059/269] MAINTAINERS: add entry for the Rust `alloc` module Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 060/269] drm/panic: avoid reimplementing Iterator::find Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 061/269] drm/panic: remove unnecessary borrow in alignment_pattern Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 062/269] drm/panic: prefer eliding lifetimes Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 063/269] drm/panic: remove redundant field when assigning value Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 064/269] drm/panic: correctly indent continuation of line in list item Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 065/269] drm/panic: allow verbose boolean for clarity Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 066/269] drm/panic: allow verbose version check Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 067/269] rust: kbuild: expand rusttest target for macros Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 068/269] rust: fix size_t in bindgen prototypes of C builtins Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 069/269] rust: map `__kernel_size_t` and friends also to usize/isize Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 070/269] rust: use custom FFI integer types Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 071/269] rust: alloc: Fix `ArrayLayout` allocations Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 072/269] Revert "of: reserved-memory: Fix using wrong number of cells to get property alignment" Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 073/269] tracing: tprobe-events: Fix a memory leak when tprobe with $retval Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 074/269] tracing: tprobe-events: Reject invalid tracepoint name Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 075/269] stmmac: loongson: Pass correct arg to PCI function Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 076/269] LoongArch: Convert unreachable() to BUG() Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 077/269] LoongArch: Use polling play_dead() when resuming from hibernation Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 078/269] LoongArch: Set max_pfn with the PFN of the last page Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 079/269] LoongArch: KVM: Add interrupt checking for AVEC Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 080/269] LoongArch: KVM: Reload guest CSR registers after sleep Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 081/269] LoongArch: KVM: Fix GPA size issue about VM Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 082/269] HID: appleir: Fix potential NULL dereference at raw event handle Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 083/269] ksmbd: fix type confusion via race condition when using ipc_msg_send_request Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 084/269] ksmbd: fix out-of-bounds in parse_sec_desc() Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 085/269] ksmbd: fix use-after-free in smb2_lock Greg Kroah-Hartman
2025-03-10 17:03 ` [PATCH 6.12 086/269] ksmbd: fix bug on trap " Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 087/269] gpio: rcar: Use raw_spinlock to protect register access Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 088/269] gpio: aggregator: protect driver attr handlers against module unload Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 089/269] ALSA: seq: Avoid module auto-load handling at event delivery Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 090/269] ALSA: hda: intel: Add Dell ALC3271 to power_save denylist Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 091/269] ALSA: hda/realtek - add supported Mic Mute LED for Lenovo platform Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 092/269] ALSA: hda/realtek: update ALC222 depop optimize Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 093/269] btrfs: fix a leaked chunk map issue in read_one_chunk() Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 094/269] hwmon: (peci/dimmtemp) Do not provide fake thresholds data Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 095/269] drm/amd/display: Fix null check for pipe_ctx->plane_state in resource_build_scaling_params Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 096/269] drm/amdkfd: Fix NULL Pointer Dereference in KFD queue Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 097/269] drm/amd/pm: always allow ih interrupt from fw Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 098/269] drm/imagination: avoid deadlock on fence release Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 099/269] drm/imagination: Hold drm_gem_gpuva lock for unmap Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 100/269] drm/imagination: only init job done fences once Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 101/269] drm/radeon: Fix rs400_gpu_init for ATI mobility radeon Xpress 200M Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 102/269] Revert "mm/page_alloc.c: dont show protection in zones ->lowmem_reserve[] for empty zone" Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 103/269] Revert "selftests/mm: remove local __NR_* definitions" Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 104/269] platform/x86: thinkpad_acpi: Add battery quirk for ThinkPad X131e Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 105/269] x86/boot: Sanitize boot params before parsing command line Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 106/269] x86/cacheinfo: Validate CPUID leaf 0x2 EDX output Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 107/269] x86/cpu: " Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 108/269] x86/cpu: Properly parse CPUID leaf 0x2 TLB descriptor 0x63 Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 109/269] drm/xe: Add staging tree for VM binds Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 110/269] drm/xe/hmm: Style- and include fixes Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 111/269] drm/xe/hmm: Dont dereference struct page pointers without notifier lock Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 112/269] drm/xe/vm: Fix a misplaced #endif Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 113/269] drm/xe/vm: Validate userptr during gpu vma prefetching Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 114/269] mptcp: fix scheduling while atomic in mptcp_pm_nl_append_new_local_addr Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 115/269] drm/xe: Fix GT "for each engine" workarounds Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 116/269] drm/xe: Fix fault mode invalidation with unbind Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 117/269] drm/xe/userptr: properly setup pfn_flags_mask Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 118/269] drm/xe/userptr: Unmap userptrs in the mmu notifier Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 119/269] Bluetooth: Add check for mgmt_alloc_skb() in mgmt_remote_name() Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 120/269] Bluetooth: Add check for mgmt_alloc_skb() in mgmt_device_connected() Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 121/269] wifi: cfg80211: regulatory: improve invalid hints checking Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 122/269] wifi: nl80211: reject cooked mode if it is set along with other flags Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 123/269] selftests/damon/damos_quota_goal: handle minimum quota that cannot be further reduced Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 124/269] selftests/damon/damos_quota: make real expectation of quota exceeds Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 125/269] selftests/damon/damon_nr_regions: set ops update for merge results check to 100ms Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 126/269] selftests/damon/damon_nr_regions: sort collected regiosn before checking with min/max boundaries Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 127/269] rapidio: add check for rio_add_net() in rio_scan_alloc_net() Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 128/269] rapidio: fix an API misues when rio_add_net() fails Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 129/269] dma: kmsan: export kmsan_handle_dma() for modules Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 130/269] s390/traps: Fix test_monitor_call() inline assembly Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 131/269] NFS: fix nfs_release_folio() to not deadlock via kcompactd writeback Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 132/269] userfaultfd: do not block on locking a large folio with raised refcount Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 133/269] block: fix conversion of GPT partition name to 7-bit Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 134/269] mm/page_alloc: fix uninitialized variable Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 135/269] mm: abort vma_modify() on merge out of memory failure Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 136/269] mm: memory-failure: update ttu flag inside unmap_poisoned_folio Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 137/269] mm: dont skip arch_sync_kernel_mappings() in error paths Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 138/269] mm: fix finish_fault() handling for large folios Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 139/269] hwpoison, memory_hotplug: lock folio before unmap hwpoisoned folio Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 140/269] mm: memory-hotplug: check folio ref count first in do_migrate_range Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 141/269] wifi: iwlwifi: mvm: clean up ROC on failure Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 142/269] wifi: iwlwifi: mvm: dont try to talk to a dead firmware Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 143/269] wifi: iwlwifi: limit printed string from FW file Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 144/269] wifi: iwlwifi: Free pages allocated when failing to build A-MSDU Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 145/269] wifi: iwlwifi: Fix A-MSDU TSO preparation Greg Kroah-Hartman
2025-03-10 17:04 ` [PATCH 6.12 146/269] HID: google: fix unused variable warning under !CONFIG_ACPI Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 147/269] HID: intel-ish-hid: Fix use-after-free issue in hid_ishtp_cl_remove() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 148/269] HID: intel-ish-hid: Fix use-after-free issue in ishtp_hid_remove() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 149/269] coredump: Only sort VMAs when core_sort_vma sysctl is set Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 150/269] nvme-pci: add support for sgl metadata Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 151/269] nvme-pci: use sgls for all user requests if possible Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 152/269] nvme-ioctl: fix leaked requests on mapping error Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 153/269] wifi: mac80211: Support parsing EPCS ML element Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 154/269] wifi: mac80211: fix MLE non-inheritance parsing Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 155/269] wifi: mac80211: fix vendor-specific inheritance Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 156/269] drm/fbdev-helper: Move color-mode lookup into 4CC format helper Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 157/269] drm/fbdev: Add memory-agnostic fbdev client Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 158/269] drm: Add client-agnostic setup helper Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 159/269] drm/fbdev-ttm: Support struct drm_driver.fbdev_probe Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 160/269] drm/nouveau: Run DRM default client setup Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 161/269] drm/nouveau: select FW caching Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 162/269] bluetooth: btusb: Initialize .owner field of force_poll_sync_fops Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 163/269] nvme-tcp: add basic support for the C2HTermReq PDU Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 164/269] nvme-tcp: fix potential memory corruption in nvme_tcp_recv_pdu() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 165/269] nvmet-tcp: Fix a possible sporadic response drops in weakly ordered arch Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 166/269] ALSA: hda/realtek: Remove (revert) duplicate Ally X config Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 167/269] net: gso: fix ownership in __udp_gso_segment Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 168/269] caif_virtio: fix wrong pointer check in cfv_probe() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 169/269] perf/core: Fix pmus_lock vs. pmus_srcu ordering Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 170/269] hwmon: (pmbus) Initialise page count in pmbus_identify() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 171/269] hwmon: (ntc_thermistor) Fix the ncpXXxh103 sensor table Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 172/269] hwmon: (ad7314) Validate leading zero bits and return error Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 173/269] tracing: probe-events: Remove unused MAX_ARG_BUF_LEN macro Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 174/269] drm/imagination: Fix timestamps in firmware traces Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 175/269] ALSA: usx2y: validate nrpacks module parameter on probe Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 176/269] llc: do not use skb_get() before dev_queue_xmit() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 177/269] hwmon: fix a NULL vs IS_ERR_OR_NULL() check in xgene_hwmon_probe() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 178/269] drm/sched: Fix preprocessor guard Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 179/269] be2net: fix sleeping while atomic bugs in be_ndo_bridge_getlink Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 180/269] net: hns3: make sure ptp clock is unregister and freed if hclge_ptp_get_cycle returns an error Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 181/269] drm/i915/color: Extract intel_color_modeset() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 182/269] drm/i915: Plumb dsb all way to the plane hooks Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 183/269] drm/xe: Remove double pageflip Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 184/269] HID: hid-steam: Fix use-after-free when detaching device Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 185/269] net: ipa: Fix v4.7 resource group names Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 186/269] net: ipa: Fix QSB data for v4.7 Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 187/269] net: ipa: Enable checksum for IPA_ENDPOINT_AP_MODEM_{RX,TX} " Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 188/269] ppp: Fix KMSAN uninit-value warning with bpf Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 189/269] ethtool: linkstate: migrate linkstate functions to support multi-PHY setups Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 190/269] net: ethtool: plumb PHY stats to PHY drivers Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 191/269] net: ethtool: netlink: Allow NULL nlattrs when getting a phy_device Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 192/269] vlan: enforce underlying device type Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 193/269] x86/sgx: Fix size overflows in sgx_encl_create() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 194/269] exfat: fix just enough dentries but allocate a new cluster to dir Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 195/269] exfat: fix soft lockup in exfat_clear_bitmap Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 196/269] exfat: short-circuit zero-byte writes in exfat_file_write_iter Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 197/269] net-timestamp: support TCP GSO case for a few missing flags Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 198/269] ublk: set_params: properly check if parameters can be applied Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 199/269] sched/fair: Fix potential memory corruption in child_cfs_rq_on_list Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 200/269] nvme-tcp: fix signedness bug in nvme_tcp_init_connection() Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 201/269] net: dsa: mt7530: Fix traffic flooding for MMIO devices Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 202/269] mctp i3c: handle NULL header address Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 203/269] net: ipv6: fix dst ref loop in ila lwtunnel Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 204/269] net: ipv6: fix missing dst ref drop " Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 205/269] gpio: rcar: Fix missing of_node_put() call Greg Kroah-Hartman
2025-03-10 17:05 ` [PATCH 6.12 206/269] Revert "drivers/card_reader/rtsx_usb: Restore interrupt based detection" Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 207/269] usb: renesas_usbhs: Call clk_put() Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 208/269] xhci: Restrict USB4 tunnel detection for USB3 devices to Intel hosts Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 209/269] usb: renesas_usbhs: Use devm_usb_get_phy() Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 210/269] usb: hub: lack of clearing xHC resources Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 211/269] usb: quirks: Add DELAY_INIT and NO_LPM for Prolific Mass Storage Card Reader Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 212/269] usb: typec: ucsi: Fix NULL pointer access Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 213/269] usb: renesas_usbhs: Flush the notify_hotplug_work Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 214/269] usb: gadget: u_ether: Set is_suspend flag if remote wakeup fails Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 215/269] usb: atm: cxacru: fix a flaw in existing endpoint checks Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 216/269] usb: dwc3: Set SUSPENDENABLE soon after phy init Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 217/269] usb: dwc3: gadget: Prevent irq storm when TH re-executes Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 218/269] usb: typec: ucsi: increase timeout for PPM reset operations Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 219/269] usb: typec: tcpci_rt1711h: Unmask alert interrupts to fix functionality Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 220/269] usb: gadget: Set self-powered based on MaxPower and bmAttributes Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 221/269] usb: gadget: Fix setting self-powered state on suspend Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 222/269] usb: gadget: Check bmAttributes only if configuration is valid Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 223/269] kbuild: userprogs: use correct lld when linking through clang Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 224/269] acpi: typec: ucsi: Introduce a ->poll_cci method Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 225/269] rust: finish using custom FFI integer types Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 226/269] rust: map `long` to `isize` and `char` to `u8` Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 227/269] xhci: pci: Fix indentation in the PCI device ID definitions Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 228/269] usb: xhci: Enable the TRB overfetch quirk on VIA VL805 Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 229/269] KVM: SVM: Set RFLAGS.IF=1 in C code, to get VMRUN out of the STI shadow Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 230/269] KVM: SVM: Save host DR masks on CPUs with DebugSwap Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 231/269] KVM: SVM: Drop DEBUGCTL[5:2] from guests effective value Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 232/269] KVM: SVM: Suppress DEBUGCTL.BTF on AMD Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 233/269] KVM: x86: Snapshot the hosts DEBUGCTL in common x86 Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 234/269] KVM: SVM: Manually context switch DEBUGCTL if LBR virtualization is disabled Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 235/269] KVM: x86: Snapshot the hosts DEBUGCTL after disabling IRQs Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 236/269] KVM: x86: Explicitly zero EAX and EBX when PERFMON_V2 isnt supported by KVM Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 237/269] cdx: Fix possible UAF error in driver_override_show() Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 238/269] mei: me: add panther lake P DID Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 239/269] mei: vsc: Use "wakeuphostint" when getting the host wakeup GPIO Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 240/269] intel_th: pci: Add Arrow Lake support Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 241/269] intel_th: pci: Add Panther Lake-H support Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 242/269] intel_th: pci: Add Panther Lake-P/U support Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 243/269] char: misc: deallocate static minor in error path Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 244/269] drivers: core: fix device leak in __fw_devlink_relax_cycles() Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 245/269] slimbus: messaging: Free transaction ID in delayed interrupt scenario Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 246/269] bus: mhi: host: pci_generic: Use pci_try_reset_function() to avoid deadlock Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 247/269] eeprom: digsy_mtc: Make GPIO lookup table match the device Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 248/269] drivers: virt: acrn: hsm: Use kzalloc to avoid info leak in pmcmd_ioctl Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 249/269] iio: filter: admv8818: Force initialization of SDO Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 250/269] iio: light: apds9306: fix max_scale_nano values Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 251/269] iio: dac: ad3552r: clear reset status flag Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 252/269] iio: adc: ad7192: fix channel select Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 253/269] iio: adc: at91-sama5d2_adc: fix sama7g5 realbits value Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 254/269] mm: hugetlb: Add huge page size param to huge_ptep_get_and_clear() Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 255/269] arm64: hugetlb: Fix huge_ptep_get_and_clear() for non-present ptes Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 256/269] fs/netfs/read_pgpriv2: skip folio queues without `marks3` Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 257/269] fs/netfs/read_collect: fix crash due to uninitialized `prev` variable Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 258/269] kbuild: hdrcheck: fix cross build with clang Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 259/269] ALSA: hda: realtek: fix incorrect IS_REACHABLE() usage Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 260/269] nvme-tcp: Fix a C2HTermReq error message Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 261/269] docs: rust: remove spurious item in `expect` list Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 262/269] Revert "KVM: e500: always restore irqs" Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 263/269] Revert "KVM: PPC: e500: Use __kvm_faultin_pfn() to handle page faults" Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 264/269] Revert "KVM: PPC: e500: Mark "struct page" pfn accessed before dropping mmu_lock" Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 265/269] Revert "KVM: PPC: e500: Mark "struct page" dirty in kvmppc_e500_shadow_map()" Greg Kroah-Hartman
2025-03-10 17:06 ` [PATCH 6.12 266/269] KVM: e500: always restore irqs Greg Kroah-Hartman
2025-03-10 17:07 ` [PATCH 6.12 267/269] uprobes: Fix race in uprobe_free_utask Greg Kroah-Hartman
2025-03-10 17:07 ` [PATCH 6.12 268/269] selftests/bpf: Clean up open-coded gettid syscall invocations Greg Kroah-Hartman
2025-03-10 17:07 ` [PATCH 6.12 269/269] x86/mm: Dont disable PCID when INVLPG has been fixed by microcode Greg Kroah-Hartman
2025-03-10 19:04 ` [PATCH 6.12 000/269] 6.12.19-rc1 review SeongJae Park
2025-03-10 19:58 ` Florian Fainelli
2025-03-11  7:04 ` Harshit Mogalapalli
2025-03-11  9:58 ` Jon Hunter
2025-03-11 10:05 ` Ron Economos
2025-03-11 12:18 ` Naresh Kamboju
2025-03-11 13:24 ` Mark Brown
2025-03-11 16:45 ` Shuah Khan
2025-03-11 17:03 ` Markus Reichelt
2025-03-11 18:04 ` Miguel Ojeda
2025-03-11 23:39 ` Peter Schneider
2025-03-12 17:17 ` Hardik Garg

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=20250310170459.399557015@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=dakr@kernel.org \
    --cc=gary@garyguo.net \
    --cc=ojeda@kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=stable@vger.kernel.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.