diff options
Diffstat (limited to 'include/linux/srcu.h')
| -rw-r--r-- | include/linux/srcu.h | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/include/linux/srcu.h b/include/linux/srcu.h index e1b005918bb..9a323728e60 100644 --- a/include/linux/srcu.h +++ b/include/linux/srcu.h @@ -99,15 +99,18 @@ long srcu_batches_completed(struct srcu_struct *sp);   * power mode. This way we can notice an extended quiescent state to   * other CPUs that started a grace period. Otherwise we would delay any   * grace period as long as we run in the idle task. + * + * Similarly, we avoid claiming an SRCU read lock held if the current + * CPU is offline.   */  static inline int srcu_read_lock_held(struct srcu_struct *sp)  { -	if (rcu_is_cpu_idle()) -		return 0; -  	if (!debug_lockdep_rcu_enabled())  		return 1; - +	if (rcu_is_cpu_idle()) +		return 0; +	if (!rcu_lockdep_current_cpu_online()) +		return 0;  	return lock_is_held(&sp->dep_map);  }  |