diff --git a/vhost_user_backend/src/lib.rs b/vhost_user_backend/src/lib.rs index 99c76ae8d..9b82b6699 100644 --- a/vhost_user_backend/src/lib.rs +++ b/vhost_user_backend/src/lib.rs @@ -172,6 +172,7 @@ impl VhostUserDaemon { struct AddrMapping { vmm_addr: u64, size: u64, + offset: u64, } struct Memory { @@ -538,7 +539,7 @@ impl VhostUserHandler { if let Some(memory) = &self.memory { for mapping in memory.mappings.iter() { if vmm_va >= mapping.vmm_addr && vmm_va < mapping.vmm_addr + mapping.size { - return Ok(vmm_va - mapping.vmm_addr); + return Ok(vmm_va - mapping.vmm_addr + mapping.offset); } } } @@ -625,7 +626,8 @@ impl VhostUserSlaveReqHandler for VhostUserHandler { regions.push((g_addr, len, Some(f_off))); mappings.push(AddrMapping { vmm_addr: region.user_addr, - size: region.memory_size + region.mmap_offset, + size: region.memory_size, + offset: region.mmap_offset, }); }