summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorPeter Zijlstra2008-01-25 21:08:34 +0100
committerIngo Molnar2008-01-25 21:08:34 +0100
commit5973e5b954848c63855a357ad4ff39882e3904f7 (patch)
treee88c2d900a228401cefc7e144bf5628434df18ac /kernel
parentsched: print backtrace of running tasks too (diff)
downloadkernel-qcow2-linux-5973e5b954848c63855a357ad4ff39882e3904f7.tar.gz
kernel-qcow2-linux-5973e5b954848c63855a357ad4ff39882e3904f7.tar.xz
kernel-qcow2-linux-5973e5b954848c63855a357ad4ff39882e3904f7.zip
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.c4
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)
#ifdef CONFIG_FAIR_GROUP_SCHED
print_cfs_rq(m, cpu, &cpu_rq(cpu)->cfs);
#endif
- lock_task_group_list();
+ rcu_read_lock();
for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq)
print_cfs_rq(m, cpu, cfs_rq);
- unlock_task_group_list();
+ rcu_read_unlock();
}
#endif