From af718875639c3042f2fc988bce69c9bc7d7d41b6 Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Tue, 1 Oct 2024 13:53:22 -0400 Subject: [PATCH] UefiHidDxeV2: Remove mutable static shared reference Use `addr_of!()` (raw pointer) to prevent a reference being created to the mutable static variable. ``` = note: this will be a hard error in the 2024 edition = note: this shared reference has lifetime `'static`, but if the static ever gets mutated, or a mutable reference is created, then any further use of this shared reference is Undefined Behavior ``` Signed-off-by: Michael Kubacki --- HidPkg/UefiHidDxeV2/src/keyboard.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/HidPkg/UefiHidDxeV2/src/keyboard.rs b/HidPkg/UefiHidDxeV2/src/keyboard.rs index 4772e43d88..746019bdd5 100644 --- a/HidPkg/UefiHidDxeV2/src/keyboard.rs +++ b/HidPkg/UefiHidDxeV2/src/keyboard.rs @@ -728,7 +728,7 @@ extern "efiapi" fn on_layout_update(_event: efi::Event, context: *mut c_void) { #[cfg(test)] mod test { - use core::{ffi::c_void, mem::MaybeUninit, slice::from_raw_parts_mut}; + use core::{ffi::c_void, mem::MaybeUninit, ptr, slice::from_raw_parts_mut}; use hii_keyboard_layout::HiiKeyboardLayout; use r_efi::{efi, hii, protocols}; @@ -1012,7 +1012,8 @@ mod test { keyboard_layout_ptr: *mut protocols::hii_database::KeyboardLayout, ) -> efi::Status { let mut keyboard_layout_buffer = vec![0u8; 4096]; - let buffer_size = keyboard_layout_buffer.pwrite(unsafe { &TEST_KEYBOARD_LAYOUT }, 0).unwrap(); + let buffer_size = + keyboard_layout_buffer.pwrite(&unsafe { (*ptr::addr_of!(TEST_KEYBOARD_LAYOUT)).clone() }, 0).unwrap(); keyboard_layout_buffer.resize(buffer_size, 0); unsafe { if keyboard_layout_length.read() < buffer_size as u16 {