diff options
-rw-r--r-- | kernel/sched.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 945009e91df0..ad42cb25e9f8 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -5387,8 +5387,13 @@ recheck: if (running) p->sched_class->set_curr_task(rq); - if (on_rq) - activate_task(rq, p, 0); + if (on_rq) { + /* + * We enqueue to tail when the priority of a task is + * increased (user space view). + */ + activate_task(rq, p, oldprio <= p->prio ? ENQUEUE_HEAD : 0); + } check_class_changed(rq, p, prev_class, oldprio); task_rq_unlock(rq, p, &flags); |