diff options
author | davidxu <davidxu@FreeBSD.org> | 2006-07-11 08:19:57 +0000 |
---|---|---|
committer | davidxu <davidxu@FreeBSD.org> | 2006-07-11 08:19:57 +0000 |
commit | 21b5baefd6277e63ad554f996fd121eb0e1b6ef0 (patch) | |
tree | 4df99a811c72117bf8953d6440d577abde97e562 /sys/kern | |
parent | 0420f47153e2abff02003a338f397c39c68f89b6 (diff) | |
download | FreeBSD-src-21b5baefd6277e63ad554f996fd121eb0e1b6ef0.zip FreeBSD-src-21b5baefd6277e63ad554f996fd121eb0e1b6ef0.tar.gz |
Don't forget to check invalid policy!
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_thr.c | 16 |
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); } } |