Messages in this thread Patch in this message | | | Subject | [PATCH] sched: sched_rt_periodic_timer vs cpu hotplug | From | Peter Zijlstra <> | Date | Mon, 16 Nov 2009 10:31:13 +0100 |
| |
Subject: sched: sched_rt_periodic_timer vs cpu hotplug From: Peter Zijlstra <a.p.zijlstra@chello.nl> Date: Mon Nov 16 10:28:09 CET 2009
Heiko reported a case where a timer interrupt managed to reference a root_domain structure that was already freed by a concurrent hot-un-plug operation.
Solve this like the regular sched_domain stuff is also synchronized, by adding a synchronize_sched() stmt to the free path, this ensures that a root_domain stays present for any atomic section that could have observed it.
Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> --- kernel/sched.c | 2 ++ 1 file changed, 2 insertions(+)
Index: linux-2.6/kernel/sched.c =================================================================== --- linux-2.6.orig/kernel/sched.c +++ linux-2.6/kernel/sched.c @@ -7921,6 +7921,8 @@ sd_parent_degenerate(struct sched_domain static void free_rootdomain(struct root_domain *rd) { + synchronize_sched(); + cpupri_cleanup(&rd->cpupri); free_cpumask_var(rd->rto_mask);
| |