diff options
author | 2008-11-04 21:25:08 +0100 | |
---|---|---|
committer | 2008-11-05 10:30:13 +0100 | |
commit | d95f98d0691d3aba5e35850011946a08c9b36428 (patch) | |
tree | 51cef12b6ad712379b63b04bd5e16292e0bbe8f0 /kernel | |
parent | sched: cleanup fair task selection (diff) | |
download | linux-d95f98d0691d3aba5e35850011946a08c9b36428.tar.gz linux-d95f98d0691d3aba5e35850011946a08c9b36428.tar.bz2 linux-d95f98d0691d3aba5e35850011946a08c9b36428.zip |
sched: fix fair preempt check
Impact: fix cross-class preemption
Inter-class wakeup preemptions should go on class order.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched_fair.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 6167336a2372..ebd6de8d17fd 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c @@ -1329,6 +1329,9 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int sync) return; } + if (unlikely(p->sched_class != &fair_sched_class)) + return; + if (unlikely(se == pse)) return; |