From 5cde55da3dbdb5856bb2ac0acff49b040c7a22d8 Mon Sep 17 00:00:00 2001 From: Jianfeng Jiang Date: Thu, 9 May 2024 06:21:17 +0000 Subject: [PATCH] Unregister observer when timeout is reached --- kernel/aster-nix/src/process/signal/pauser.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/aster-nix/src/process/signal/pauser.rs b/kernel/aster-nix/src/process/signal/pauser.rs index 6ccddddc0..6299cdc8f 100644 --- a/kernel/aster-nix/src/process/signal/pauser.rs +++ b/kernel/aster-nix/src/process/signal/pauser.rs @@ -153,14 +153,14 @@ impl Pauser { let res = if let Some(timeout) = timeout { self.wait_queue .wait_until_or_timeout(cond, timeout) - .ok_or_else(|| Error::with_message(Errno::ETIME, "timeout is reached"))? + .ok_or_else(|| Error::with_message(Errno::ETIME, "timeout is reached")) } else { - self.wait_queue.wait_until(cond) + Ok(self.wait_queue.wait_until(cond)) }; posix_thread.unregiser_sigqueue_observer(&observer); - match res { + match res? { Res::Ok(r) => Ok(r), Res::Interrupted => return_errno_with_message!(Errno::EINTR, "interrupted by signal"), }