summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_thr.c
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2006-07-11 08:19:57 +0000
committerdavidxu <davidxu@FreeBSD.org>2006-07-11 08:19:57 +0000
commit21b5baefd6277e63ad554f996fd121eb0e1b6ef0 (patch)
tree4df99a811c72117bf8953d6440d577abde97e562 /sys/kern/kern_thr.c
parent0420f47153e2abff02003a338f397c39c68f89b6 (diff)
downloadFreeBSD-src-21b5baefd6277e63ad554f996fd121eb0e1b6ef0.zip
FreeBSD-src-21b5baefd6277e63ad554f996fd121eb0e1b6ef0.tar.gz
Don't forget to check invalid policy!
Diffstat (limited to 'sys/kern/kern_thr.c')
-rw-r--r--sys/kern/kern_thr.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/kern/kern_thr.c b/sys/kern/kern_thr.c
index 8110aa2..3f76c46 100644
--- a/sys/kern/kern_thr.c
+++ b/sys/kern/kern_thr.c
@@ -128,18 +128,20 @@ create_thread(struct thread *td, mcontext_t *ctx,
return (EPROCLIM);
if (sched != NULL) {
- /* Only root can set scheduler policy */
- if (sched->policy != SCHED_OTHER) {
+ switch(sched->policy) {
+ case SCHED_FIFO:
+ case SCHED_RR:
+ /* Only root can set scheduler policy */
if (suser(td) != 0)
return (EPERM);
-
- if (sched->policy != SCHED_FIFO &&
- sched->policy != SCHED_RR)
- return (EINVAL);
-
if (sched->param.sched_priority < RTP_PRIO_MIN ||
sched->param.sched_priority > RTP_PRIO_MAX)
return (EINVAL);
+ break;
+ case SCHED_OTHER:
+ break;
+ default:
+ return (EINVAL);
}
}
OpenPOWER on IntegriCloud