mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
sched: Sched_rt_periodic_timer vs cpu hotplug
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> Cc: Gregory Haskins <ghaskins@novell.com> Cc: Siddha Suresh B <suresh.b.siddha@intel.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> LKML-Reference: <1258363873.26714.83.camel@laptop> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
498657a478
commit
047106adcc
1 changed files with 2 additions and 0 deletions
|
@ -7912,6 +7912,8 @@ sd_parent_degenerate(struct sched_domain *sd, struct sched_domain *parent)
|
||||||
|
|
||||||
static void free_rootdomain(struct root_domain *rd)
|
static void free_rootdomain(struct root_domain *rd)
|
||||||
{
|
{
|
||||||
|
synchronize_sched();
|
||||||
|
|
||||||
cpupri_cleanup(&rd->cpupri);
|
cpupri_cleanup(&rd->cpupri);
|
||||||
|
|
||||||
free_cpumask_var(rd->rto_mask);
|
free_cpumask_var(rd->rto_mask);
|
||||||
|
|
Loading…
Reference in a new issue