diff --git a/kernel/aster-nix/src/syscall/waitid.rs b/kernel/aster-nix/src/syscall/waitid.rs index f80a6dfe4..3e78f4a3c 100644 --- a/kernel/aster-nix/src/syscall/waitid.rs +++ b/kernel/aster-nix/src/syscall/waitid.rs @@ -16,7 +16,8 @@ pub fn sys_waitid( ) -> Result { // FIXME: what does infoq and rusage use for? let process_filter = ProcessFilter::from_which_and_id(which, upid)?; - let wait_options = WaitOptions::from_bits(options as u32).expect("Unknown wait options"); + let wait_options = WaitOptions::from_bits(options as u32) + .ok_or(Error::with_message(Errno::EINVAL, "invalid options"))?; let waited_process = wait_child_exit(process_filter, wait_options)?; let pid = waited_process.map_or(0, |process| process.pid()); Ok(SyscallReturn::Return(pid as _))