From f1a7c767d2f617a2cfba27f7725b5968096f34b9 Mon Sep 17 00:00:00 2001 From: Yuke Peng Date: Tue, 12 Dec 2023 15:36:49 +0800 Subject: [PATCH] Fix IoMem read and write bugs --- framework/jinux-frame/src/io_mem.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/framework/jinux-frame/src/io_mem.rs b/framework/jinux-frame/src/io_mem.rs index b04995cec..6ad3cb3de 100644 --- a/framework/jinux-frame/src/io_mem.rs +++ b/framework/jinux-frame/src/io_mem.rs @@ -17,7 +17,7 @@ impl VmIo for IoMem { self.check_range(offset, buf.len())?; unsafe { core::ptr::copy( - self.virtual_address as *const u8, + (self.virtual_address + offset) as *const u8, buf.as_mut_ptr(), buf.len(), ); @@ -28,7 +28,11 @@ impl VmIo for IoMem { fn write_bytes(&self, offset: usize, buf: &[u8]) -> crate::Result<()> { self.check_range(offset, buf.len())?; unsafe { - core::ptr::copy(buf.as_ptr(), self.virtual_address as *mut u8, buf.len()); + core::ptr::copy( + buf.as_ptr(), + (self.virtual_address + offset) as *mut u8, + buf.len(), + ); } Ok(()) }