summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_umtx.c
diff options
context:
space:
mode:
authormdf <mdf@FreeBSD.org>2010-12-15 19:30:44 +0000
committermdf <mdf@FreeBSD.org>2010-12-15 19:30:44 +0000
commit60b768f654fc1da5d29aab98583c0c7d6e2ae334 (patch)
tree3729f1e97aeb72e429a14afee3b4a72ab04f7e1d /sys/kern/kern_umtx.c
parentdd13f4b76e479537afaa94281fc40d59d7e6e342 (diff)
downloadFreeBSD-src-60b768f654fc1da5d29aab98583c0c7d6e2ae334.zip
FreeBSD-src-60b768f654fc1da5d29aab98583c0c7d6e2ae334.tar.gz
One of the compat32 functions was copying in a raw timespec, instead of
a 32-bit one. This can cause weird timeout issues, as the copying reads garbage from the user. Code by: Deepak Veliath <deepak dot veliath at isilon dot com> MFC after: 1 week
Diffstat (limited to 'sys/kern/kern_umtx.c')
-rw-r--r--sys/kern/kern_umtx.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c
index e7b9b32..77e47e5 100644
--- a/sys/kern/kern_umtx.c
+++ b/sys/kern/kern_umtx.c
@@ -3411,8 +3411,7 @@ __umtx_op_rw_rdlock_compat32(struct thread *td, struct _umtx_op_args *uap)
if (uap->uaddr2 == NULL) {
error = do_rw_rdlock(td, uap->obj, uap->val, 0);
} else {
- error = copyin(uap->uaddr2, &timeout,
- sizeof(timeout));
+ error = copyin_timeout32(uap->uaddr2, &timeout);
if (error != 0)
return (error);
if (timeout.tv_nsec >= 1000000000 ||
OpenPOWER on IntegriCloud