diff --git a/devices/src/ivshmem.rs b/devices/src/ivshmem.rs index 932e0d9eb..c913f9fe4 100644 --- a/devices/src/ivshmem.rs +++ b/devices/src/ivshmem.rs @@ -45,11 +45,11 @@ pub enum IvshmemError { #[error("Failed to remove user memory region")] RemoveUserMemoryRegion, #[error("Failed to create user memory region.")] - CreateUserMemoryRegion, + CreateUserMemoryRegion(#[source] anyhow::Error), #[error("Failed to create userspace mapping.")] - CreateUserspaceMapping, + CreateUserspaceMapping(#[source] anyhow::Error), #[error("Failed to remove old userspace mapping.")] - RemoveUserspaceMapping, + RemoveUserspaceMapping(#[source] anyhow::Error), } #[derive(Copy, Clone)] diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index 3b677fa2f..5c6056d11 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -5372,7 +5372,7 @@ impl IvshmemOps for IvshmemHandler { None, false, ) - .map_err(|_| IvshmemError::CreateUserMemoryRegion)?; + .map_err(|e| IvshmemError::CreateUserMemoryRegion(e.into()))?; let mem_slot = { let mut manager = self.memory_manager.lock().unwrap(); // SAFETY: guaranteed by MmapRegion invariants @@ -5387,7 +5387,7 @@ impl IvshmemOps for IvshmemHandler { ) } } - .map_err(|_| IvshmemError::CreateUserspaceMapping)?; + .map_err(|e| IvshmemError::CreateUserspaceMapping(e.into()))?; let region = Arc::new(region); let mapping = UserspaceMapping { mapping: region.clone(), @@ -5410,7 +5410,7 @@ impl IvshmemOps for IvshmemHandler { mapping.mem_slot, ) } - .map_err(|_| IvshmemError::RemoveUserspaceMapping)?; + .map_err(|e| IvshmemError::RemoveUserspaceMapping(e.into()))?; Ok(()) } }