git: e858b9de8e99 - stable/13 - When sending ignored signal, arrange for zero return code from sleep
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 10 Oct 2021 09:24:21 UTC
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=e858b9de8e9988702ea0d895dc5182dee5e0c067
commit e858b9de8e9988702ea0d895dc5182dee5e0c067
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-10-01 06:59:02 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-10-10 09:21:18 +0000
When sending ignored signal, arrange for zero return code from sleep
(cherry picked from commit f17eb93d5540ec2bf422d96195820bba5021fa9c)
---
sys/kern/kern_sig.c | 23 +++++++++++++----------
sys/kern/subr_sleepqueue.c | 2 +-
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 059c1716a89b..1aef62bb1cb2 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -2233,17 +2233,20 @@ tdsendsignal(struct proc *p, struct thread *td, int sig, ksiginfo_t *ksi)
return (ret);
} else {
action = SIG_CATCH;
+ intrval = 0;
}
- } else if (SIGISMEMBER(td->td_sigmask, sig))
- action = SIG_HOLD;
- else if (SIGISMEMBER(ps->ps_sigcatch, sig))
- action = SIG_CATCH;
- else
- action = SIG_DFL;
- if (SIGISMEMBER(ps->ps_sigintr, sig))
- intrval = EINTR;
- else
- intrval = ERESTART;
+ } else {
+ if (SIGISMEMBER(td->td_sigmask, sig))
+ action = SIG_HOLD;
+ else if (SIGISMEMBER(ps->ps_sigcatch, sig))
+ action = SIG_CATCH;
+ else
+ action = SIG_DFL;
+ if (SIGISMEMBER(ps->ps_sigintr, sig))
+ intrval = EINTR;
+ else
+ intrval = ERESTART;
+ }
mtx_unlock(&ps->ps_mtx);
if (prop & SIGPROP_CONT)
diff --git a/sys/kern/subr_sleepqueue.c b/sys/kern/subr_sleepqueue.c
index b146a978a60c..a95c9a721f6f 100644
--- a/sys/kern/subr_sleepqueue.c
+++ b/sys/kern/subr_sleepqueue.c
@@ -1125,7 +1125,7 @@ sleepq_abort(struct thread *td, int intrval)
THREAD_LOCK_ASSERT(td, MA_OWNED);
MPASS(TD_ON_SLEEPQ(td));
MPASS(td->td_flags & TDF_SINTR);
- MPASS(intrval == EINTR || intrval == ERESTART);
+ MPASS(intrval == 0 || intrval == EINTR || intrval == ERESTART);
/*
* If the TDF_TIMEOUT flag is set, just leave. A