diff --git a/src/syscall/process.rs b/src/syscall/process.rs index fb572096e8..f7b1186dc4 100644 --- a/src/syscall/process.rs +++ b/src/syscall/process.rs @@ -381,8 +381,12 @@ pub fn sigreturn() -> Result { let contexts = context::contexts(); let context_lock = contexts.current().ok_or(Error::new(ESRCH))?; let mut context = context_lock.write(); - context.ksig_restore = true; - context.block("sigreturn"); + if context.ksig.is_some() { + context.ksig_restore = true; + context.block("sigreturn"); + } else { + return Err(Error::new(EINVAL)); + } } let _ = unsafe { context::switch() };