[PATCH v3] rust: net: netlink: Migrate to zerocopy's IntoBytes

Sagar Taunk posted 1 patch 1 week, 2 days ago
rust/kernel/net/netlink.rs | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
[PATCH v3] rust: net: netlink: Migrate to zerocopy's IntoBytes
Posted by Sagar Taunk 1 week, 2 days ago
Replace the kernel's own `transmute::FromBytes` and `AsBytes` traits
with their zerocopy equivalents. Specifically, this updates
`GenlMsg::put` to rely on `IntoBytes` for converting attributes into
byte slices.

Also, add `Immutable` trait bound on `GenlMsg::put` as zerocopy
splits the `no interior mutability` guarantee that `AsBytes` bundled
together.

Link: https://github.com/Rust-for-Linux/linux/issues/1241
Signed-off-by: Sagar Taunk <sagartaunk@proton.me>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
---
Changes Since V2: Follow vertical import style as told by Alexandre Courbot. 
No functional changes.

 rust/kernel/net/netlink.rs | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/rust/kernel/net/netlink.rs b/rust/kernel/net/netlink.rs
index 22ef3dde36fa..a2f4bd171dcf 100644
--- a/rust/kernel/net/netlink.rs
+++ b/rust/kernel/net/netlink.rs
@@ -12,7 +12,6 @@
     alloc::{self, AllocError},
     error::to_result,
     prelude::*,
-    transmute::AsBytes,
     types::Opaque,
     ThisModule,
 };
@@ -22,6 +21,11 @@
     ptr::NonNull, //
 };
 
+use zerocopy::{
+    Immutable,
+    IntoBytes, //
+};
+
 /// The default netlink message size.
 pub const GENLMSG_DEFAULT_SIZE: usize = bindings::GENLMSG_DEFAULT_SIZE;
 
@@ -84,7 +88,7 @@ impl GenlMsg {
     #[inline]
     fn put<T>(&mut self, attrtype: c_int, value: &T) -> Result
     where
-        T: ?Sized + AsBytes,
+        T: ?Sized + IntoBytes + Immutable,
     {
         let skb = self.skb.skb.as_ptr();
         let len = size_of_val(value);
-- 
2.55.0
Re: [PATCH v3] rust: net: netlink: Migrate to zerocopy's IntoBytes
Posted by Alice Ryhl 1 week ago
On Tue, Sep 15, 2026 at 02:42:44PM +0000, Sagar Taunk wrote:
> Replace the kernel's own `transmute::FromBytes` and `AsBytes` traits
> with their zerocopy equivalents. Specifically, this updates
> `GenlMsg::put` to rely on `IntoBytes` for converting attributes into
> byte slices.
> 
> Also, add `Immutable` trait bound on `GenlMsg::put` as zerocopy
> splits the `no interior mutability` guarantee that `AsBytes` bundled
> together.
> 
> Link: https://github.com/Rust-for-Linux/linux/issues/1241
> Signed-off-by: Sagar Taunk <sagartaunk@proton.me>
> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>

Thanks, this change is ok with me.

Reviewed-by: Alice Ryhl <aliceryhl@google.com>

Can you send this to the net folks? Please update your patch title to 
[PATCH net-next vX] according to the guidelines outlined in:

Documentation/process/maintainer-netdev.rst

Alice
Re: [PATCH v3] rust: net: netlink: Migrate to zerocopy's IntoBytes
Posted by Jakub Kicinski 1 week ago
On Thu, 17 Sep 2026 09:32:58 +0000 Alice Ryhl wrote:
> Can you send this to the net folks? Please update your patch title to 
> [PATCH net-next vX] according to the guidelines outlined in:

Good note, please remember that next time, no need to repost this one.