From d6e7bb54ff24de449a6e362d121822bf71d47fe1 Mon Sep 17 00:00:00 2001 From: Markus Ebner Date: Tue, 10 Jun 2025 15:36:05 +0200 Subject: [PATCH] uefi: Fix io-align == 0 edgecase handling for ata & nvme --- uefi/src/proto/ata/pass_thru.rs | 4 +++- uefi/src/proto/nvme/pass_thru.rs | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/uefi/src/proto/ata/pass_thru.rs b/uefi/src/proto/ata/pass_thru.rs index 3b7a277c5..d50d21843 100644 --- a/uefi/src/proto/ata/pass_thru.rs +++ b/uefi/src/proto/ata/pass_thru.rs @@ -42,7 +42,9 @@ impl AtaPassThru { /// The [`AtaPassThruMode`] structure containing configuration details of the protocol. #[must_use] pub fn mode(&self) -> AtaPassThruMode { - unsafe { (*self.0.mode).clone() } + let mut mode = unsafe { (*self.0.mode).clone() }; + mode.io_align = mode.io_align.max(1); // 0 and 1 is the same, says UEFI spec + mode } /// Retrieves the I/O buffer alignment required by this SCSI channel. diff --git a/uefi/src/proto/nvme/pass_thru.rs b/uefi/src/proto/nvme/pass_thru.rs index ece5954e9..588845410 100644 --- a/uefi/src/proto/nvme/pass_thru.rs +++ b/uefi/src/proto/nvme/pass_thru.rs @@ -49,7 +49,9 @@ impl NvmePassThru { /// An instance of [`NvmePassThruMode`] describing the NVMe controller's capabilities. #[must_use] pub fn mode(&self) -> NvmePassThruMode { - unsafe { (*self.0.mode).clone() } + let mut mode = unsafe { (*self.0.mode).clone() }; + mode.io_align = mode.io_align.max(1); // 0 and 1 is the same, says UEFI spec + mode } /// Retrieves the alignment requirements for I/O buffers.