[PATCH v1] rust: pwm: use pin_init::zeroed() to initialize pwm_ops
From: Francis Laniel
Date: Fri May 29 2026 - 12:03:57 EST
Replace unsafe block containing core::mem::zeroed by calling
pin_init::zeroed().
This is safer, as this function is guarded by trait contrary to
core::mem:zeroed().
Also, we can call this because all fields in pwm_ops, i.e. function
pointers in Option<> and usize, are Zeroable.
Link: https://github.com/Rust-for-Linux/linux/issues/1189
Signed-off-by: Francis Laniel <laniel_francis@xxxxxxxxxxxxxxxxxxx>
---
rust/kernel/pwm.rs | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/rust/kernel/pwm.rs b/rust/kernel/pwm.rs
index 6c9d667009ef..3427b7d93a03 100644
--- a/rust/kernel/pwm.rs
+++ b/rust/kernel/pwm.rs
@@ -494,9 +494,7 @@ pub(crate) fn as_raw(&self) -> *const bindings::pwm_ops {
/// This is used to bridge Rust trait implementations to the C `struct pwm_ops`
/// expected by the kernel.
pub const fn create_pwm_ops<T: PwmOps>() -> PwmOpsVTable {
- // SAFETY: `core::mem::zeroed()` is unsafe. For `pwm_ops`, all fields are
- // `Option<extern "C" fn(...)>` or data, so a zeroed pattern (None/0) is valid initially.
- let mut ops: bindings::pwm_ops = unsafe { core::mem::zeroed() };
+ let mut ops: bindings::pwm_ops = pin_init::zeroed();
ops.request = Some(Adapter::<T>::request_callback);
ops.capture = Some(Adapter::<T>::capture_callback);
--
2.47.3