sched: Push put_prev_task() into pick_next_task()
[firefly-linux-kernel-4.4.55.git] / kernel / sched / stop_task.c
index fdb6bb0b33561af759e24d8806776dfc0823867c..a4147c9d20178e52e4bd79d8bbf633beaf16afa1 100644 (file)
@@ -23,16 +23,20 @@ check_preempt_curr_stop(struct rq *rq, struct task_struct *p, int flags)
        /* we're never preempted */
 }
 
-static struct task_struct *pick_next_task_stop(struct rq *rq)
+static struct task_struct *
+pick_next_task_stop(struct rq *rq, struct task_struct *prev)
 {
        struct task_struct *stop = rq->stop;
 
-       if (stop && stop->on_rq) {
-               stop->se.exec_start = rq_clock_task(rq);
-               return stop;
-       }
+       if (!stop || !stop->on_rq)
+               return NULL;
 
-       return NULL;
+       if (prev)
+               prev->sched_class->put_prev_task(rq, prev);
+
+       stop->se.exec_start = rq_clock_task(rq);
+
+       return stop;
 }
 
 static void