Commit 040beccb authored by Siyuan Huang's avatar Siyuan Huang Committed by Rafael J. Wysocki
Browse files

rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed`

All types in `bindings` implement `Zeroable` if they can, so use
`pin_init::zeroed` instead of relying on `unsafe` code.

If this ends up not compiling in the future, something in bindgen or on
the C side changed and is most likely incorrect.

Link: https://github.com/Rust-for-Linux/linux/issues/1189


Suggested-by: default avatarBenno Lossin <lossin@kernel.org>
Signed-off-by: default avatarSiyuan Huang <huangsiyuan@kylinos.cn>
Reviewed-by: default avatarAlice Ryhl <aliceryhl@google.com>
Reviewed-by: default avatarBenno Lossin <lossin@kernel.org>
Acked-by: default avatarDanilo Krummrich <dakr@kernel.org>
Reviewed-by: default avatarKunwu Chan <chentao@kylinos.cn>
Link: https://patch.msgid.link/20251020031204.78917-1-huangsiyuan@kylinos.cn


Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent dcb6fa37
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -39,9 +39,7 @@ impl DeviceId {
    pub const fn new(id: &'static CStr) -> Self {
        let src = id.to_bytes_with_nul();
        build_assert!(src.len() <= Self::ACPI_ID_LEN, "ID exceeds 16 bytes");
        // Replace with `bindings::acpi_device_id::default()` once stabilized for `const`.
        // SAFETY: FFI type is valid to be zero-initialized.
        let mut acpi: bindings::acpi_device_id = unsafe { core::mem::zeroed() };
        let mut acpi: bindings::acpi_device_id = pin_init::zeroed();
        let mut i = 0;
        while i < src.len() {
            acpi.id[i] = src[i];