summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2006-03-15 11:22:16 +0000
committerclaudio <claudio@openbsd.org>2006-03-15 11:22:16 +0000
commit30479be7d51966f52397921cd4519aa07c869007 (patch)
tree95a632a407b8a427feb57ea7f128d6ad25c8237a /sys/kern/sys_generic.c
parentif no key file are given when printing the DNS host record, use the (diff)
downloadwireguard-openbsd-30479be7d51966f52397921cd4519aa07c869007.tar.xz
wireguard-openbsd-30479be7d51966f52397921cd4519aa07c869007.zip
copyout() the pollfds if poll() gets interrupted. This resets the revents
bitmask and makes poll() behave like documented in the man page. OK deraadt@
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r--sys/kern/sys_generic.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 584d4f87783..548b2ef82fb 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sys_generic.c,v 1.51 2005/12/13 10:33:14 jsg Exp $ */
+/* $OpenBSD: sys_generic.c,v 1.52 2006/03/15 11:22:16 claudio Exp $ */
/* $NetBSD: sys_generic.c,v 1.24 1996/03/29 00:25:32 cgd Exp $ */
/*
@@ -928,7 +928,9 @@ done:
*/
switch (error) {
case ERESTART:
- error = EINTR;
+ error = copyout(pl, SCARG(uap, fds), sz);
+ if (error == 0)
+ error = EINTR;
break;
case EWOULDBLOCK:
case 0: