git: 299912abf269 - stable/13 - sigwait(2) and sigtimedwait(2) must not be restarted.
Konstantin Belousov
kib at FreeBSD.org
Tue Jun 22 01:46:08 UTC 2021
The branch stable/13 has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=299912abf26990afdc406ecd3a12f256a8080afe
commit 299912abf26990afdc406ecd3a12f256a8080afe
Author: Konstantin Belousov <kib at FreeBSD.org>
AuthorDate: 2021-06-06 23:00:10 +0000
Commit: Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-06-22 01:45:31 +0000
sigwait(2) and sigtimedwait(2) must not be restarted.
(cherry picked from commit afb36e289c1d96053b6063b0e548fc7d31dbd239)
---
sys/kern/kern_sig.c | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 0453d3b2702c..a2709f38c5cb 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -1168,9 +1168,7 @@ 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);
+ return (ERESTART);
td->td_retval[0] = error;
return (0);
}
@@ -1329,15 +1327,13 @@ kern_sigtimedwait(struct thread *td, sigset_t waitset, ksiginfo_t *ksi,
error = msleep(ps, &p->p_mtx, PPAUSE|PCATCH, "sigwait", timo);
- if (timeout != NULL) {
- if (error == ERESTART) {
- /* Timeout can not be restarted. */
- error = EINTR;
- } else if (error == EAGAIN) {
- /* We will calculate timeout by ourself. */
- error = 0;
- }
- }
+ /* The syscalls can not be restarted. */
+ if (error == ERESTART)
+ error = EINTR;
+
+ /* We will calculate timeout by ourself. */
+ if (timeout != NULL && error == EAGAIN)
+ error = 0;
/*
* If PTRACE_SCE or PTRACE_SCX were set after
More information about the dev-commits-src-all
mailing list