From e7b92818979426cbdd98093341db7b37fa9492da Mon Sep 17 00:00:00 2001 From: Carlos Llamas Date: Thu, 15 May 2025 18:37:04 +0000 Subject: [PATCH] ANDROID: rust: allow zero init for KABI members Allow all-zero initialization for structures that have KABI padding added. Otherwise, the new __kabi_reserved* fields would need to be individually initialized. This fixes reported errors such as: error[E0063]: missing field `__kabi_reserved1` in initializer of `blk_mq_ops` --> /proc/self/cwd/common/rust/kernel/block/mq/operations.rs:216:42 | 216 | const VTABLE: bindings::blk_mq_ops = bindings::blk_mq_ops { | ^^^^^^^^^^^^^^^^^^^^ missing `__kabi_reserved1` Bug: 151154716 Cc: Alice Ryhl Cc: Matthew Maurer Cc: Greg Kroah-Hartman Change-Id: If7996037e95b3947eb3b3afa9513cff18f4be116 Signed-off-by: Carlos Llamas --- rust/kernel/block/mq/gen_disk.rs | 2 ++ rust/kernel/block/mq/operations.rs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/rust/kernel/block/mq/gen_disk.rs b/rust/kernel/block/mq/gen_disk.rs index c6df153ebb88..380aa79676ed 100644 --- a/rust/kernel/block/mq/gen_disk.rs +++ b/rust/kernel/block/mq/gen_disk.rs @@ -134,6 +134,8 @@ impl GenDiskBuilder { pr_ops: core::ptr::null_mut(), free_disk: None, poll_bio: None, + // SAFETY: Allow all zeros because of Android KABI members + ..unsafe { core::mem::MaybeUninit::zeroed().assume_init() } }; // SAFETY: `gendisk` is a valid pointer as we initialized it above diff --git a/rust/kernel/block/mq/operations.rs b/rust/kernel/block/mq/operations.rs index c8646d0d9866..169e9e2c2330 100644 --- a/rust/kernel/block/mq/operations.rs +++ b/rust/kernel/block/mq/operations.rs @@ -237,6 +237,8 @@ impl OperationsVTable { map_queues: None, #[cfg(CONFIG_BLK_DEBUG_FS)] show_rq: None, + // SAFETY: Allow all zeros because of Android KABI members + ..unsafe { core::mem::MaybeUninit::zeroed().assume_init() } }; pub(crate) const fn build() -> &'static bindings::blk_mq_ops {