diff options
Diffstat (limited to 'kernel/sched/stop_task.c')
-rw-r--r-- | kernel/sched/stop_task.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c index fdb6bb0b3356..a4147c9d2017 100644 --- a/kernel/sched/stop_task.c +++ b/kernel/sched/stop_task.c | |||
@@ -23,16 +23,20 @@ check_preempt_curr_stop(struct rq *rq, struct task_struct *p, int flags) | |||
23 | /* we're never preempted */ | 23 | /* we're never preempted */ |
24 | } | 24 | } |
25 | 25 | ||
26 | static struct task_struct *pick_next_task_stop(struct rq *rq) | 26 | static struct task_struct * |
27 | pick_next_task_stop(struct rq *rq, struct task_struct *prev) | ||
27 | { | 28 | { |
28 | struct task_struct *stop = rq->stop; | 29 | struct task_struct *stop = rq->stop; |
29 | 30 | ||
30 | if (stop && stop->on_rq) { | 31 | if (!stop || !stop->on_rq) |
31 | stop->se.exec_start = rq_clock_task(rq); | 32 | return NULL; |
32 | return stop; | ||
33 | } | ||
34 | 33 | ||
35 | return NULL; | 34 | if (prev) |
35 | prev->sched_class->put_prev_task(rq, prev); | ||
36 | |||
37 | stop->se.exec_start = rq_clock_task(rq); | ||
38 | |||
39 | return stop; | ||
36 | } | 40 | } |
37 | 41 | ||
38 | static void | 42 | static void |