aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/sched.h4
-rw-r--r--kernel/sched.c5
2 files changed, 4 insertions, 5 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 503dea61ff99..fbc69cc3923d 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -504,8 +504,8 @@ struct signal_struct {
504#define rt_prio(prio) unlikely((prio) < MAX_RT_PRIO) 504#define rt_prio(prio) unlikely((prio) < MAX_RT_PRIO)
505#define rt_task(p) rt_prio((p)->prio) 505#define rt_task(p) rt_prio((p)->prio)
506#define batch_task(p) (unlikely((p)->policy == SCHED_BATCH)) 506#define batch_task(p) (unlikely((p)->policy == SCHED_BATCH))
507#define has_rt_policy(p) \ 507#define is_rt_policy(p) ((p) != SCHED_NORMAL && (p) != SCHED_BATCH)
508 unlikely((p)->policy != SCHED_NORMAL && (p)->policy != SCHED_BATCH) 508#define has_rt_policy(p) unlikely(is_rt_policy((p)->policy))
509 509
510/* 510/*
511 * Some day this will be a full-fledged user tracking system.. 511 * Some day this will be a full-fledged user tracking system..
diff --git a/kernel/sched.c b/kernel/sched.c
index f9b3c6a414f1..c3c718aea618 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4109,8 +4109,7 @@ recheck:
4109 (p->mm && param->sched_priority > MAX_USER_RT_PRIO-1) || 4109 (p->mm && param->sched_priority > MAX_USER_RT_PRIO-1) ||
4110 (!p->mm && param->sched_priority > MAX_RT_PRIO-1)) 4110 (!p->mm && param->sched_priority > MAX_RT_PRIO-1))
4111 return -EINVAL; 4111 return -EINVAL;
4112 if ((policy == SCHED_NORMAL || policy == SCHED_BATCH) 4112 if (is_rt_policy(policy) != (param->sched_priority != 0))
4113 != (param->sched_priority == 0))
4114 return -EINVAL; 4113 return -EINVAL;
4115 4114
4116 /* 4115 /*
@@ -4134,7 +4133,7 @@ recheck:
4134 !rlim_rtprio) 4133 !rlim_rtprio)
4135 return -EPERM; 4134 return -EPERM;
4136 /* can't increase priority */ 4135 /* can't increase priority */
4137 if ((policy != SCHED_NORMAL && policy != SCHED_BATCH) && 4136 if (is_rt_policy(policy) &&
4138 param->sched_priority > p->rt_priority && 4137 param->sched_priority > p->rt_priority &&
4139 param->sched_priority > rlim_rtprio) 4138 param->sched_priority > rlim_rtprio)
4140 return -EPERM; 4139 return -EPERM;