diff options
author | mdf <mdf@FreeBSD.org> | 2010-12-15 19:30:44 +0000 |
---|---|---|
committer | mdf <mdf@FreeBSD.org> | 2010-12-15 19:30:44 +0000 |
commit | 60b768f654fc1da5d29aab98583c0c7d6e2ae334 (patch) | |
tree | 3729f1e97aeb72e429a14afee3b4a72ab04f7e1d /sys/kern/kern_umtx.c | |
parent | dd13f4b76e479537afaa94281fc40d59d7e6e342 (diff) | |
download | FreeBSD-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.c | 3 |
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 || |