|
@@ -2980,7 +2980,6 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
|
|
|
}
|
|
|
|
|
|
trace_sched_pi_setprio(p, prio);
|
|
|
- p->pi_top_task = rt_mutex_get_top_task(p);
|
|
|
oldprio = p->prio;
|
|
|
prev_class = p->sched_class;
|
|
|
on_rq = p->on_rq;
|
|
@@ -3000,8 +2999,9 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
|
|
|
* running task
|
|
|
*/
|
|
|
if (dl_prio(prio)) {
|
|
|
- if (!dl_prio(p->normal_prio) || (p->pi_top_task &&
|
|
|
- dl_entity_preempt(&p->pi_top_task->dl, &p->dl))) {
|
|
|
+ struct task_struct *pi_task = rt_mutex_get_top_task(p);
|
|
|
+ if (!dl_prio(p->normal_prio) ||
|
|
|
+ (pi_task && dl_entity_preempt(&pi_task->dl, &p->dl))) {
|
|
|
p->dl.dl_boosted = 1;
|
|
|
p->dl.dl_throttled = 0;
|
|
|
enqueue_flag = ENQUEUE_REPLENISH;
|