diff options
author | Peter Zijlstra <peterz@infradead.org> | 2009-04-01 18:40:15 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-07-10 10:43:29 +0200 |
commit | a1ba4d8ba9f06a397e97cbd67a93ee306860b40a (patch) | |
tree | f0e0f92a2c0763f8ec162c2b0e2abc389075b207 /kernel/sched.c | |
parent | d4ec36bac3de39b7e10ec8f42fbdd20d9a9ed753 (diff) | |
download | op-kernel-dev-a1ba4d8ba9f06a397e97cbd67a93ee306860b40a.zip op-kernel-dev-a1ba4d8ba9f06a397e97cbd67a93ee306860b40a.tar.gz |
sched_rt: Fix overload bug on rt group scheduling
Fixes an easily triggerable BUG() when setting process affinities.
Make sure to count the number of migratable tasks in the same place:
the root rt_rq. Otherwise the number doesn't make sense and we'll hit
the BUG in set_cpus_allowed_rt().
Also, make sure we only count tasks, not groups (this is probably
already taken care of by the fact that rt_se->nr_cpus_allowed will be 0
for groups, but be more explicit)
Tested-by: Thomas Gleixner <tglx@linutronix.de>
CC: stable@kernel.org
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Gregory Haskins <ghaskins@novell.com>
LKML-Reference: <1247067476.9777.57.camel@twins>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 7c9098d..a17f3d9 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -493,6 +493,7 @@ struct rt_rq { #endif #ifdef CONFIG_SMP unsigned long rt_nr_migratory; + unsigned long rt_nr_total; int overloaded; struct plist_head pushable_tasks; #endif |