Add back a bounds check on valid idle priorities that was lost in an
earlier commit. While here, move the thread lock down in rtp_to_pri(). It is not needed for all of the priority value checks and the computation of newpri. Reported by: swell.k @ gmail MFC after: 3 days
This commit is contained in:
parent
766d7e6539
commit
36b4cd243e
@ -462,29 +462,27 @@ rtp_to_pri(struct rtprio *rtp, struct thread *td)
|
||||
u_char newpri;
|
||||
u_char oldpri;
|
||||
|
||||
thread_lock(td);
|
||||
switch (RTP_PRIO_BASE(rtp->type)) {
|
||||
case RTP_PRIO_REALTIME:
|
||||
if (rtp->prio > RTP_PRIO_MAX) {
|
||||
thread_unlock(td);
|
||||
if (rtp->prio > RTP_PRIO_MAX)
|
||||
return (EINVAL);
|
||||
}
|
||||
newpri = PRI_MIN_REALTIME + rtp->prio;
|
||||
break;
|
||||
case RTP_PRIO_NORMAL:
|
||||
if (rtp->prio > (PRI_MAX_TIMESHARE - PRI_MIN_TIMESHARE)) {
|
||||
thread_unlock(td);
|
||||
if (rtp->prio > (PRI_MAX_TIMESHARE - PRI_MIN_TIMESHARE))
|
||||
return (EINVAL);
|
||||
}
|
||||
newpri = PRI_MIN_TIMESHARE + rtp->prio;
|
||||
break;
|
||||
case RTP_PRIO_IDLE:
|
||||
if (rtp->prio > RTP_PRIO_MAX)
|
||||
return (EINVAL);
|
||||
newpri = PRI_MIN_IDLE + rtp->prio;
|
||||
break;
|
||||
default:
|
||||
thread_unlock(td);
|
||||
return (EINVAL);
|
||||
}
|
||||
|
||||
thread_lock(td);
|
||||
sched_class(td, rtp->type); /* XXX fix */
|
||||
oldpri = td->td_user_pri;
|
||||
sched_user_prio(td, newpri);
|
||||
|
Loading…
Reference in New Issue
Block a user