From 85109ebae0e7baa4e3f3a5cbeb8c5d6cff3e884e Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Tue, 2 Jun 2026 06:40:11 +0200 Subject: [PATCH] vm-migration: preserve error chain On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster --- vm-migration/src/lib.rs | 6 +++++- vmm/src/memory_manager.rs | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/vm-migration/src/lib.rs b/vm-migration/src/lib.rs index 125d762bf..eff7760af 100644 --- a/vm-migration/src/lib.rs +++ b/vm-migration/src/lib.rs @@ -26,7 +26,11 @@ pub enum UffdError { Create(#[source] std::io::Error), #[error("Cannot translate GPA {gpa:#x} to host address")] - GpaTranslation { gpa: u64 }, + GpaTranslation { + gpa: u64, + #[source] + source: vm_memory::GuestMemoryError, + }, #[error("Failed to register region at {addr:#x}+{len:#x}")] Register { diff --git a/vmm/src/memory_manager.rs b/vmm/src/memory_manager.rs index 3a9e6df4b..2d65c427e 100644 --- a/vmm/src/memory_manager.rs +++ b/vmm/src/memory_manager.rs @@ -996,8 +996,10 @@ impl MemoryManager { for range in saved_regions.regions() { let host_addr = guest_memory .get_host_address(GuestAddress(range.gpa)) - .map_err(|_| UffdError::GpaTranslation { gpa: range.gpa })? - as u64; + .map_err(|e| UffdError::GpaTranslation { + gpa: range.gpa, + source: e, + })? as u64; let ioctls = uffd::register(uffd_fd.as_fd(), host_addr, range.length).map_err(|e| { UffdError::Register {