Solve some lock ordering

This commit is contained in:
Wildan M
2026-04-29 22:54:52 +07:00
parent 3914801f1e
commit 1070efaec8
4 changed files with 18 additions and 25 deletions
+2 -4
View File
@@ -36,13 +36,11 @@ pub fn exit_this_context(excp: Option<syscall::Exception>, token: &mut CleanLock
let context_lock = context::current();
{
let mut context = context_lock.write(token.token());
// let (context, mut token) = context.token_split();
let (context, mut token) = context.token_split();
close_files = Arc::try_unwrap(mem::take(&mut context.files))
.map_or_else(|_| FdTbl::new(), RwLock::into_inner);
// TODO: Lock ordering violation
let mut token = unsafe { CleanLockToken::new() };
addrspace_opt = context
.set_addr_space(None, token.downgrade())
.set_addr_space(None, token)
.and_then(|a| Arc::try_unwrap(a).ok());
drop(mem::replace(&mut context.syscall_head, SyscallFrame::Dummy));
drop(mem::replace(&mut context.syscall_tail, SyscallFrame::Dummy));