diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 2f8363e0a1ec5..15be43522c8bb 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4396,8 +4396,13 @@ static int __sched_setscheduler(struct task_struct *p, int policy, if (running) p->sched_class->set_curr_task(rq); - if (on_rq) - enqueue_task(rq, p, 0); + if (on_rq) { + /* + * We enqueue to tail when the priority of a task is + * increased (user space view). + */ + enqueue_task(rq, p, oldprio <= p->prio ? ENQUEUE_HEAD : 0); + } check_class_changed(rq, p, prev_class, oldprio); task_rq_unlock(rq, p, &flags);