summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r--sys/kern/sys_generic.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index f72ca9fd3cb..2fd7d6ec035 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sys_generic.c,v 1.125 2019/06/22 06:48:25 semarie Exp $ */
+/* $OpenBSD: sys_generic.c,v 1.126 2019/10/03 18:47:19 cheloha Exp $ */
/* $NetBSD: sys_generic.c,v 1.24 1996/03/29 00:25:32 cgd Exp $ */
/*
@@ -664,7 +664,7 @@ retry:
error = selscan(p, pibits[0], pobits[0], nd, ni, retval);
if (error || *retval)
goto done;
- while (timeout == NULL || timespecisset(timeout)) {
+ if (timeout == NULL || timespecisset(timeout)) {
timo = (timeout == NULL) ? 0 : tstohz(timeout);
if (timeout != NULL)
getnanouptime(&start);
@@ -683,10 +683,8 @@ retry:
if (timeout->tv_sec < 0)
timespecclear(timeout);
}
- if (error == 0)
+ if (error == 0 || error == EWOULDBLOCK)
goto retry;
- if (error != EWOULDBLOCK)
- break;
}
done:
atomic_clearbits_int(&p->p_flag, P_SELECT);
@@ -968,7 +966,7 @@ retry:
pollscan(p, pl, nfds, retval);
if (*retval)
goto done;
- while (timeout == NULL || timespecisset(timeout)) {
+ if (timeout == NULL || timespecisset(timeout)) {
timo = (timeout == NULL) ? 0 : tstohz(timeout);
if (timeout != NULL)
getnanouptime(&start);
@@ -987,10 +985,8 @@ retry:
if (timeout->tv_sec < 0)
timespecclear(timeout);
}
- if (error == 0)
+ if (error == 0 || error == EWOULDBLOCK)
goto retry;
- if (error != EWOULDBLOCK)
- break;
}
done: