aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/sched.c9
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);