diff options
Diffstat (limited to 'kernel/rcu/tree_plugin.h')
| -rw-r--r-- | kernel/rcu/tree_plugin.h | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index e3142ee35fc6..7b0fe741a088 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -1221,11 +1221,13 @@ static void rcu_spawn_one_boost_kthread(struct rcu_node *rnp)   * We don't include outgoingcpu in the affinity set, use -1 if there is   * no outgoing CPU.  If there are no CPUs left in the affinity set,   * this function allows the kthread to execute on any CPU. + * + * Any future concurrent calls are serialized via ->boost_kthread_mutex.   */  static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)  {  	struct task_struct *t = rnp->boost_kthread_task; -	unsigned long mask = rcu_rnp_online_cpus(rnp); +	unsigned long mask;  	cpumask_var_t cm;  	int cpu; @@ -1234,6 +1236,7 @@ static void rcu_boost_kthread_setaffinity(struct rcu_node *rnp, int outgoingcpu)  	if (!zalloc_cpumask_var(&cm, GFP_KERNEL))  		return;  	mutex_lock(&rnp->boost_kthread_mutex); +	mask = rcu_rnp_online_cpus(rnp);  	for_each_leaf_node_possible_cpu(rnp, cpu)  		if ((mask & leaf_node_cpu_bit(rnp, cpu)) &&  		    cpu != outgoingcpu) |