rust: init: fix `Zeroable` implementation for `Option<NonNull<T>>` and `Option<KBox...
authorBenno Lossin <benno.lossin@proton.me>
Wed, 5 Mar 2025 13:29:01 +0000 (13:29 +0000)
committerMiguel Ojeda <ojeda@kernel.org>
Wed, 5 Mar 2025 22:57:39 +0000 (23:57 +0100)
commitdf27cef153603b18a7d094b53cc3d5264ff32797
treefd89956dad99a45310bc81ddf79bf0a15d5e45dd
parent374908a15af4cd60862ebc51a6e012ace2212c76
rust: init: fix `Zeroable` implementation for `Option<NonNull<T>>` and `Option<KBox<T>>`

According to [1], `NonNull<T>` and `#[repr(transparent)]` wrapper types
such as our custom `KBox<T>` have the null pointer optimization only if
`T: Sized`. Thus remove the `Zeroable` implementation for the unsized
case.

Link: https://doc.rust-lang.org/stable/std/option/index.html#representation
Reported-by: Alice Ryhl <aliceryhl@google.com>
Closes: https://lore.kernel.org/rust-for-linux/CAH5fLghL+qzrD8KiCF1V3vf2YcC6aWySzkmaE2Zzrnh1gKj-hw@mail.gmail.com/
Cc: stable@vger.kernel.org # v6.12+ (a custom patch will be needed for 6.6.y)
Fixes: 38cde0bd7b67 ("rust: init: add `Zeroable` trait and `init::zeroed` function")
Signed-off-by: Benno Lossin <benno.lossin@proton.me>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Andreas Hindborg <a.hindborg@kernel.org>
Link: https://lore.kernel.org/r/20250305132836.2145476-1-benno.lossin@proton.me
[ Added Closes tag and moved up the Reported-by one. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/init.rs