From c08d2b2c704af6979ced3adbf2191a77d2260303 Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Thu, 16 Jul 2020 10:47:02 +0000 Subject: [PATCH] device_manager: avoid manipulating MemoryRegion fields directly Hyper-V may have different field names. Use make_user_memory_region instead. No functional change. Signed-off-by: Wei Liu --- vmm/src/device_manager.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index 2fa4f77a9..006900d25 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -601,7 +601,7 @@ impl DeviceRelocation for AddressManager { if let Some(mut shm_regions) = virtio_dev.get_shm_regions() { if shm_regions.addr.raw_value() == old_base { // Remove old region from KVM by passing a size of 0. - let mut mem_region = self.vm.make_user_memory_region( + let mem_region = self.vm.make_user_memory_region( shm_regions.mem_slot, old_base, 0, @@ -617,8 +617,13 @@ impl DeviceRelocation for AddressManager { })?; // Create new mapping by inserting new region to KVM. - mem_region.guest_phys_addr = new_base; - mem_region.memory_size = shm_regions.len; + let mem_region = self.vm.make_user_memory_region( + shm_regions.mem_slot, + new_base, + shm_regions.len, + shm_regions.host_addr, + false, + ); self.vm.set_user_memory_region(mem_region).map_err(|e| { io::Error::new(