From 65ef055f4e340fff7bc4f051ec62974571794b85 Mon Sep 17 00:00:00 2001 From: Hsy-Intel Date: Wed, 6 Dec 2023 17:04:07 +0800 Subject: [PATCH] impl From for Error --- .../libs/jinux-std/src/device/tdxguest/mod.rs | 57 ++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/services/libs/jinux-std/src/device/tdxguest/mod.rs b/services/libs/jinux-std/src/device/tdxguest/mod.rs index 9f9627835..6a493d8da 100644 --- a/services/libs/jinux-std/src/device/tdxguest/mod.rs +++ b/services/libs/jinux-std/src/device/tdxguest/mod.rs @@ -1,4 +1,5 @@ use super::*; +use crate::error::Error; use crate::events::IoEvents; use crate::fs::inode_handle::FileIo; use crate::fs::utils::IoctlCmd; @@ -28,6 +29,29 @@ impl Device for TdxGuest { } } +impl From for Error { + fn from(err: TdCallError) -> Self { + match err { + TdCallError::TdxNoValidVeInfo => { + Error::with_message(Errno::EINVAL, "TdCallError::TdxNoValidVeInfo") + } + TdCallError::TdxOperandInvalid => { + Error::with_message(Errno::EINVAL, "TdCallError::TdxOperandInvalid") + } + TdCallError::TdxPageAlreadyAccepted => { + Error::with_message(Errno::EINVAL, "TdCallError::TdxPageAlreadyAccepted") + } + TdCallError::TdxPageSizeMismatch => { + Error::with_message(Errno::EINVAL, "TdCallError::TdxPageSizeMismatch") + } + TdCallError::TdxOperandBusy => { + Error::with_message(Errno::EBUSY, "TdCallError::TdxOperandBusy") + } + TdCallError::Other => Error::with_message(Errno::EAGAIN, "TdCallError::Other"), + } + } +} + impl FileIo for TdxGuest { fn read(&self, buf: &mut [u8]) -> Result { return_errno_with_message!(Errno::EPERM, "Read operation not supported") @@ -43,38 +67,7 @@ impl FileIo for TdxGuest { let mut tdx_report: TdxReportRequest = read_val_from_user(arg)?; match get_report(&mut tdx_report.tdreport, &tdx_report.reportdata) { Ok(_) => {} - Err(err) => match err { - TdCallError::TdxNoValidVeInfo => { - return_errno_with_message!( - Errno::EINVAL, - "TdCallError::TdxNoValidVeInfo" - ) - } - TdCallError::TdxOperandInvalid => { - return_errno_with_message!( - Errno::EINVAL, - "TdCallError::TdxOperandInvalid" - ) - } - TdCallError::TdxPageAlreadyAccepted => { - return_errno_with_message!( - Errno::EINVAL, - "TdCallError::TdxPageAlreadyAccepted" - ) - } - TdCallError::TdxPageSizeMismatch => { - return_errno_with_message!( - Errno::EINVAL, - "TdCallError::TdxPageSizeMismatch" - ) - } - TdCallError::TdxOperandBusy => { - return_errno_with_message!(Errno::EBUSY, "TdCallError::TdxOperandBusy") - } - TdCallError::Other => { - return_errno_with_message!(Errno::EAGAIN, "TdCallError::Other") - } - }, + Err(err) => return Err(err.into()), }; write_val_to_user(arg, &tdx_report)?; Ok(0)