Fix panic in sys_waitid() by options

This commit is contained in:
Marsman1996
2024-08-21 20:56:03 +08:00
committed by Tate, Hongliang Tian
parent ec7391468c
commit ef9e600c9d

View File

@ -16,7 +16,8 @@ pub fn sys_waitid(
) -> Result<SyscallReturn> { ) -> Result<SyscallReturn> {
// FIXME: what does infoq and rusage use for? // FIXME: what does infoq and rusage use for?
let process_filter = ProcessFilter::from_which_and_id(which, upid)?; 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 waited_process = wait_child_exit(process_filter, wait_options)?;
let pid = waited_process.map_or(0, |process| process.pid()); let pid = waited_process.map_or(0, |process| process.pid());
Ok(SyscallReturn::Return(pid as _)) Ok(SyscallReturn::Return(pid as _))