diff --git a/kernel/src/arch/riscv/mem.rs b/kernel/src/arch/riscv/mem.rs index 84e534763..e58913a08 100644 --- a/kernel/src/arch/riscv/mem.rs +++ b/kernel/src/arch/riscv/mem.rs @@ -525,10 +525,6 @@ pub fn pagetable_entry(addr: usize) -> Result<&'static mut usize, xous_kernel::E pub fn unmap_page_inner(_mm: &mut MemoryManager, virt: usize) -> Result { let entry = pagetable_entry(virt)?; - // Ensure the entry hasn't already been mapped. - if *entry & 1 == 0 { - return Err(xous_kernel::Error::BadAddress); - } let phys = (*entry >> 10) << 12; *entry = 0; unsafe { flush_mmu() }; diff --git a/kernel/src/mem.rs b/kernel/src/mem.rs index cf46f7e96..c84002146 100644 --- a/kernel/src/mem.rs +++ b/kernel/src/mem.rs @@ -534,7 +534,7 @@ impl MemoryManager { // If the virtual address has an assigned physical address, release that // address from this process. if let Ok(phys) = crate::arch::mem::virt_to_phys(virt as usize) { - self.release_page(phys as *mut usize, pid)?; + self.release_page(phys as *mut usize, pid).ok(); }; // Free the virtual address.