All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rust: bitfield: require Zeroable storage for Zeroable impl
@ 2026-09-13 15:34 Yilin Chen
  2026-09-13 19:37 ` Gary Guo
  0 siblings, 1 reply; 9+ messages in thread
From: Yilin Chen @ 2026-09-13 15:34 UTC (permalink / raw)
  To: rust-for-linux; +Cc: linux-kernel, acourbot, yury.norov, ojeda, Yilin Chen

The bitfield! macro implements Zeroable for generated wrapper
types. This assumes the storage type accepts an all-zero bit
pattern. However, the macro accepts any type and does not encode
that requirement.

Add a Zeroable bound to the generated implementation. This prevents
invalid storage types from obtaining an unsound Zeroable implementation.

Fixes: b7b8b4ccdad4 ("rust: extract `bitfield!` macro from `register!`")
Assisted-by: Codex:GPT-5.6 Sol
Signed-off-by: Yilin Chen <1479826151@qq.com>
---
 rust/kernel/bitfield.rs | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/rust/kernel/bitfield.rs b/rust/kernel/bitfield.rs
index a0d0894..3dd4dea 100644
--- a/rust/kernel/bitfield.rs
+++ b/rust/kernel/bitfield.rs
@@ -330,8 +330,12 @@ macro_rules! bitfield {
             }
         }
 
-        // SAFETY: `$storage` is `Zeroable` and `$name` is transparent.
-        unsafe impl ::pin_init::Zeroable for $name {}
+        // SAFETY:
+        // - `$storage: Zeroable` guarantees that the all-zero bit pattern is valid.
+        // - `$name` is `repr(transparent)` over `$storage`.
+        unsafe impl ::pin_init::Zeroable for $name
+        where $storage: ::pin_init::Zeroable
+        {}
 
         impl ::core::convert::From<$name> for $storage {
             #[inline(always)]
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-09-22 14:02 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-13 15:34 [PATCH] rust: bitfield: require Zeroable storage for Zeroable impl Yilin Chen
2026-09-13 19:37 ` Gary Guo
2026-09-21  6:32   ` Yilin Chen
2026-09-21  7:18     ` Alexandre Courbot
2026-09-21 10:05       ` Gary Guo
2026-09-22  5:28         ` [PATCH v2] rust: bitfield: require integer storage Yilin Chen
2026-09-22 13:53           ` Alexandre Courbot
2026-09-22 14:02             ` Gary Guo
2026-09-22 13:39         ` [PATCH] rust: bitfield: require Zeroable storage for Zeroable impl Alexandre Courbot

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.