aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/rcupdate.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/rcupdate.h')
-rw-r--r--include/linux/rcupdate.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 1a4de31bd7b4..fcea332a8424 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -62,6 +62,8 @@ extern int sched_expedited_torture_stats(char *page);
62 62
63/* Internal to kernel */ 63/* Internal to kernel */
64extern void rcu_init(void); 64extern void rcu_init(void);
65extern int rcu_scheduler_active;
66extern void rcu_scheduler_starting(void);
65 67
66#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) 68#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
67#include <linux/rcutree.h> 69#include <linux/rcutree.h>
@@ -140,7 +142,7 @@ static inline int rcu_read_lock_sched_held(void)
140 142
141 if (debug_locks) 143 if (debug_locks)
142 lockdep_opinion = lock_is_held(&rcu_sched_lock_map); 144 lockdep_opinion = lock_is_held(&rcu_sched_lock_map);
143 return lockdep_opinion || preempt_count() != 0; 145 return lockdep_opinion || preempt_count() != 0 || !rcu_scheduler_active;
144} 146}
145 147
146#else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ 148#else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */