From ece13bf89abdf05a8db8389e7f120f24b7065907 Mon Sep 17 00:00:00 2001 From: Srivatsa Vaddagiri Date: Fri, 25 Jan 2008 21:08:00 +0100 Subject: [PATCH] --- yaml --- r: 76116 b: refs/heads/master c: a183561567b5446d3362b4839bd4f744f4b2af1e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 0bd8f83ba4b4..a46e1a53de09 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 58e2d4ca581167c2a079f4ee02be2f0bc52e8729 +refs/heads/master: a183561567b5446d3362b4839bd4f744f4b2af1e diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index c915f3e6e593..d9585f15043f 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -185,6 +185,9 @@ static struct cfs_rq *init_cfs_rq_p[NR_CPUS]; */ static DEFINE_MUTEX(task_group_mutex); +/* doms_cur_mutex serializes access to doms_cur[] array */ +static DEFINE_MUTEX(doms_cur_mutex); + /* Default task group. * Every task in system belong to this group at bootup. */ @@ -234,11 +237,23 @@ static inline void unlock_task_group_list(void) mutex_unlock(&task_group_mutex); } +static inline void lock_doms_cur(void) +{ + mutex_lock(&doms_cur_mutex); +} + +static inline void unlock_doms_cur(void) +{ + mutex_unlock(&doms_cur_mutex); +} + #else static inline void set_task_cfs_rq(struct task_struct *p, unsigned int cpu) { } static inline void lock_task_group_list(void) { } static inline void unlock_task_group_list(void) { } +static inline void lock_doms_cur(void) { } +static inline void unlock_doms_cur(void) { } #endif /* CONFIG_FAIR_GROUP_SCHED */ @@ -6543,6 +6558,8 @@ void partition_sched_domains(int ndoms_new, cpumask_t *doms_new) { int i, j; + lock_doms_cur(); + /* always unregister in case we don't destroy any domains */ unregister_sched_domain_sysctl(); @@ -6583,6 +6600,8 @@ void partition_sched_domains(int ndoms_new, cpumask_t *doms_new) ndoms_cur = ndoms_new; register_sched_domain_sysctl(); + + unlock_doms_cur(); } #if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT)