From: Benno Lossin Date: Fri, 16 Jan 2026 10:54:29 +0000 (+0100) Subject: rust: pin-init: internal: init: simplify Zeroable safety check X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f1cd6964bbc37f2cc82a0adc8a0acec34af1afb;p=thirdparty%2Flinux.git rust: pin-init: internal: init: simplify Zeroable safety check The `Zeroable` type check uses a small dance with a raw pointer to aid type inference. It turns out that this is not necessary and type inference is powerful enough to resolve any ambiguity. Thus remove it. Suggested-by: Gary Guo Tested-by: Andreas Hindborg Reviewed-by: Gary Guo Signed-off-by: Benno Lossin --- diff --git a/rust/pin-init/internal/src/init.rs b/rust/pin-init/internal/src/init.rs index ed2e1462e176a..42936f915a07a 100644 --- a/rust/pin-init/internal/src/init.rs +++ b/rust/pin-init/internal/src/init.rs @@ -414,17 +414,12 @@ fn make_field_check( #[allow(unreachable_code, clippy::diverging_sub_expression, unused_assignments)] // SAFETY: this code is never executed. let _ = || unsafe { - let mut zeroed = ::core::mem::zeroed(); - // We have to use type inference here to make zeroed have the correct type. This - // does not get executed, so it has no effect. - ::core::ptr::write(slot, zeroed); - zeroed = ::core::mem::zeroed(); ::core::ptr::write(slot, #path { #( #(#field_attrs)* #field_name: ::core::panic!(), )* - ..zeroed + ..::core::mem::zeroed() }) }; },