Fixed mapping problems

This commit is contained in:
Erin 2023-07-26 13:04:58 +02:00 committed by ondra05
parent c55e3e82c9
commit e3dd5ed944

View file

@ -64,7 +64,7 @@ impl Memory {
}; };
// Walk pagetable levels // Walk pagetable levels
for lvl in (lookup_depth..4).rev() { for lvl in (lookup_depth + 1..5).rev() {
let entry = (*current_pt) let entry = (*current_pt)
.table .table
.get_unchecked_mut(addr_extract_index(target, lvl)); .get_unchecked_mut(addr_extract_index(target, lvl));
@ -114,7 +114,6 @@ impl Memory {
/// just should be ignored. /// just should be ignored.
#[cfg(feature = "alloc")] #[cfg(feature = "alloc")]
pub fn unmap(&mut self, addr: u64) -> Result<(), NothingToUnmap> { pub fn unmap(&mut self, addr: u64) -> Result<(), NothingToUnmap> {
extern crate std;
let mut current_pt = self.root_pt; let mut current_pt = self.root_pt;
let mut page_tables = [core::ptr::null_mut(); 5]; let mut page_tables = [core::ptr::null_mut(); 5];
@ -140,6 +139,7 @@ impl Memory {
// empty permission - no UB here! // empty permission - no UB here!
_ => unsafe { _ => unsafe {
core::ptr::write_bytes(entry, 0, 1); core::ptr::write_bytes(entry, 0, 1);
break;
}, },
} }
} }