summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_sig.c2
-rw-r--r--sys/sys/param.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 8622b41..188bf83 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1094,6 +1094,8 @@ sys_sigwait(struct thread *td, struct sigwait_args *uap)
error = kern_sigtimedwait(td, set, &ksi, NULL);
if (error) {
+ if (error == EINTR && td->td_proc->p_osrel < P_OSREL_SIGWAIT)
+ error = ERESTART;
if (error == ERESTART)
return (error);
td->td_retval[0] = error;
diff --git a/sys/sys/param.h b/sys/sys/param.h
index c10b433..57ff3a3 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -61,6 +61,7 @@
#define __FreeBSD_version 1000000 /* Master, propagated to newvers */
#ifdef _KERNEL
+#define P_OSREL_SIGWAIT 700000
#define P_OSREL_SIGSEGV 700004
#define P_OSREL_MAP_ANON 800104
#endif
OpenPOWER on IntegriCloud