From 527dd68ce1705bfb0bc0b17980e2d3861acfcc0d Mon Sep 17 00:00:00 2001 From: Cathy Zhang Date: Tue, 24 Sep 2019 15:39:45 +0800 Subject: [PATCH] vhost_user_backend: Update vmm_va_to_gpa with adding offset The original logic does not has any problem without offset, since the current offset is zero. However, if offset is not zero, while convert vmm address to backend process address, it needs to consider the offset. Signed-off-by: Cathy Zhang --- vhost_user_backend/src/lib.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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, }); }