From b1b82f3f6ca45be27baba1bdf2f347574153973a Mon Sep 17 00:00:00 2001 From: "Paul E. McKenney" Date: Thu, 12 Jan 2012 13:08:18 -0800 Subject: [PATCH] --- yaml --- r: 288563 b: refs/heads/master c: c44e2cddacc2cf299186bad5697d738ea19668b7 h: refs/heads/master i: 288561: 734b2890d187fb1f713d1816f3082053606f3e58 288559: c65e5f6dee0aa259058487e8f2902617b8d5ef5e v: v3 --- [refs] | 2 +- trunk/kernel/rcutree.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index be932f3e5654..915646e5027f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 30fbcc90b02187c55c57ff0ecf57cecbd487d694 +refs/heads/master: c44e2cddacc2cf299186bad5697d738ea19668b7 diff --git a/trunk/kernel/rcutree.c b/trunk/kernel/rcutree.c index 0569ba11e35a..195bf1fb59ea 100644 --- a/trunk/kernel/rcutree.c +++ b/trunk/kernel/rcutree.c @@ -366,6 +366,17 @@ static void rcu_idle_enter_common(struct rcu_dynticks *rdtp, long long oldval) atomic_inc(&rdtp->dynticks); smp_mb__after_atomic_inc(); /* Force ordering with next sojourn. */ WARN_ON_ONCE(atomic_read(&rdtp->dynticks) & 0x1); + + /* + * The idle task is not permitted to enter the idle loop while + * in an RCU read-side critical section. + */ + rcu_lockdep_assert(!lock_is_held(&rcu_lock_map), + "Illegal idle entry in RCU read-side critical section."); + rcu_lockdep_assert(!lock_is_held(&rcu_bh_lock_map), + "Illegal idle entry in RCU-bh read-side critical section."); + rcu_lockdep_assert(!lock_is_held(&rcu_sched_lock_map), + "Illegal idle entry in RCU-sched read-side critical section."); } /**