diff --git a/os/src/mm/page_table.rs b/os/src/mm/page_table.rs index 3c2f7f6f..91db66bb 100644 --- a/os/src/mm/page_table.rs +++ b/os/src/mm/page_table.rs @@ -166,7 +166,11 @@ pub fn translated_byte_buffer(token: usize, ptr: *const u8, len: usize) -> Vec<& vpn.step(); let mut end_va: VirtAddr = vpn.into(); end_va = end_va.min(VirtAddr::from(end)); - v.push(&mut ppn.get_bytes_array()[start_va.page_offset()..end_va.page_offset()]); + if end_va.page_offset() == 0 { + v.push(&mut ppn.get_bytes_array()[start_va.page_offset()..]); + } else { + v.push(&mut ppn.get_bytes_array()[start_va.page_offset()..end_va.page_offset()]); + } start = end_va.into(); } v