From ef9e600c9d0fb365e17c1fb1cb203c0b72274333 Mon Sep 17 00:00:00 2001 From: Marsman1996 Date: Wed, 21 Aug 2024 20:56:03 +0800 Subject: [PATCH] Fix panic in `sys_waitid()` by options --- kernel/aster-nix/src/syscall/waitid.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 _))