summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstsp <stsp@openbsd.org>2011-01-25 18:42:45 +0000
committerstsp <stsp@openbsd.org>2011-01-25 18:42:45 +0000
commit228045f66dc2c3a8a63938798d7a1cdfa7f13d59 (patch)
treedb2e154611d76d29e8939c787211f3ec27927502
parentAvoid double blank line before a table preceded by .PP. (diff)
downloadwireguard-openbsd-228045f66dc2c3a8a63938798d7a1cdfa7f13d59.tar.xz
wireguard-openbsd-228045f66dc2c3a8a63938798d7a1cdfa7f13d59.zip
Don't ignore copyout() return value in sys_thrsleep().
Spotted by miod some time ago. ok miod guenther
-rw-r--r--sys/kern/kern_synch.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c
index 7fdd5e72d2d..137dbb35973 100644
--- a/sys/kern/kern_synch.c
+++ b/sys/kern/kern_synch.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kern_synch.c,v 1.95 2010/06/29 00:28:14 tedu Exp $ */
+/* $OpenBSD: kern_synch.c,v 1.96 2011/01/25 18:42:45 stsp Exp $ */
/* $NetBSD: kern_synch.c,v 1.37 1996/04/22 01:38:37 christos Exp $ */
/*
@@ -428,8 +428,11 @@ sys_thrsleep(struct proc *p, void *v, register_t *revtal)
if (timespeccmp(&ats, &now, <)) {
/* already passed: still do the unlock */
- if (lock)
- copyout(&unlocked, lock, sizeof(unlocked));
+ if (lock) {
+ if ((error = copyout(&unlocked, lock,
+ sizeof(unlocked))) != 0)
+ return (error);
+ }
return (EWOULDBLOCK);
}
@@ -444,8 +447,10 @@ sys_thrsleep(struct proc *p, void *v, register_t *revtal)
p->p_thrslpid = ident;
- if (lock)
- copyout(&unlocked, lock, sizeof(unlocked));
+ if (lock) {
+ if ((error = copyout(&unlocked, lock, sizeof(unlocked))) != 0)
+ return (error);
+ }
error = tsleep(&p->p_thrslpid, PUSER | PCATCH, "thrsleep",
(int)to_ticks);