Use umtx_copyin_timeout() to copy and check timeout parameter.

In collaboration with:	kib
MFC after:	1 week
This commit is contained in:
Peter Holm 2011-12-03 12:35:13 +00:00
parent e4d1fe5447
commit 9a1d0cf68f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=228221

View File

@ -450,8 +450,7 @@ sys_thr_suspend(struct thread *td, struct thr_suspend_args *uap)
tsp = NULL;
if (uap->timeout != NULL) {
error = copyin((const void *)uap->timeout, (void *)&ts,
sizeof(struct timespec));
error = umtx_copyin_timeout(uap->timeout, &ts);
if (error != 0)
return (error);
tsp = &ts;
@ -474,9 +473,6 @@ kern_thr_suspend(struct thread *td, struct timespec *tsp)
}
if (tsp != NULL) {
if (tsp->tv_sec < 0 || tsp->tv_nsec < 0 ||
tsp->tv_nsec > 1000000000)
return (EINVAL);
if (tsp->tv_sec == 0 && tsp->tv_nsec == 0)
error = EWOULDBLOCK;
else {