Handle AddrSpace munmap

This commit is contained in:
Wildan M
2026-04-24 17:52:05 +07:00
parent f773d3e50d
commit 58660a9170
3 changed files with 16 additions and 4 deletions
+4 -1
View File
@@ -942,7 +942,10 @@ impl ContextHandle {
let page_span = crate::syscall::validate_region(next()??, next()??)?;
let unpin = false;
addrspace.munmap(page_span, unpin, token)?;
let res = addrspace.munmap(page_span, unpin, token)?;
for r in res {
let _ = r.unmap(token);
}
}
ADDRSPACE_OP_MPROTECT => {
let page_span = crate::syscall::validate_region(next()??, next()??)?;
+4 -1
View File
@@ -117,7 +117,10 @@ pub fn resource(token: &mut CleanLockToken) -> Result<Vec<u8>> {
{
let addr_space = Arc::clone(context::current().read(token.token()).addr_space()?);
addr_space.munmap(PageSpan::new(fpath_page, page_count.get()), false, token)?;
let res = addr_space.munmap(PageSpan::new(fpath_page, page_count.get()), false, token)?;
for r in res {
let _ = r.unmap(token);
}
}
res
+8 -2
View File
@@ -975,7 +975,10 @@ impl UserInner {
drop(states_lock);
let unpin = true;
AddrSpace::current()?.munmap(callee_responsible, unpin, token)?;
let res = AddrSpace::current()?.munmap(callee_responsible, unpin, token)?;
for r in res {
let _ = r.unmap(token);
}
}
},
// invalid state
@@ -1330,7 +1333,10 @@ impl<const READ: bool, const WRITE: bool> CaptureGuard<READ, WRITE> {
if let Some(ref addrsp) = self.addrsp
&& !self.span.is_empty()
{
addrsp.munmap(self.span, unpin, token)?;
let res = addrsp.munmap(self.span, unpin, token)?;
for r in res {
let _ = r.unmap(token);
}
}
Ok(())