diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2008-01-25 15:08:34 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-25 15:08:34 -0500 |
commit | 5973e5b954848c63855a357ad4ff39882e3904f7 (patch) | |
tree | e88c2d900a228401cefc7e144bf5628434df18ac /kernel | |
parent | 5fb5e6de55860a99c2d8fe7e0c8222d5c53d8464 (diff) |
sched: fix: don't take a mutex from interrupt context
print_cfs_stats is callable from interrupt context (sysrq), hence it should
not take mutexes. Change it to use RCU since the task group data is RCU
freed anyway.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched_fair.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 1b3b40ad7c54..45ff4e9411e0 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -1434,9 +1434,9 @@ static void print_cfs_stats(struct seq_file *m, int cpu) | |||
1434 | #ifdef CONFIG_FAIR_GROUP_SCHED | 1434 | #ifdef CONFIG_FAIR_GROUP_SCHED |
1435 | print_cfs_rq(m, cpu, &cpu_rq(cpu)->cfs); | 1435 | print_cfs_rq(m, cpu, &cpu_rq(cpu)->cfs); |
1436 | #endif | 1436 | #endif |
1437 | lock_task_group_list(); | 1437 | rcu_read_lock(); |
1438 | for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq) | 1438 | for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq) |
1439 | print_cfs_rq(m, cpu, cfs_rq); | 1439 | print_cfs_rq(m, cpu, cfs_rq); |
1440 | unlock_task_group_list(); | 1440 | rcu_read_unlock(); |
1441 | } | 1441 | } |
1442 | #endif | 1442 | #endif |