Re: [PATCH RFC tip/core/rcu 24/41] rcu: Check for idle-loop entrywhile in RCU read-side critical section
From: Josh Triplett
Date: Thu Feb 02 2012 - 00:14:05 EST
On Wed, Feb 01, 2012 at 11:41:42AM -0800, Paul E. McKenney wrote:
> --- a/kernel/rcutree.c
> +++ b/kernel/rcutree.c
> @@ -366,6 +366,20 @@ 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.");
Quoting a paragraph I added to Documentation/CodingStyle:
> Statements longer than 80 columns will be broken into sensible chunks, unless
> exceeding 80 columns significantly increases readability and does not hide
> information. Descendants are always substantially shorter than the parent and
> are placed substantially to the right. The same applies to function headers
> with a long argument list. However, never break user-visible strings such as
> printk messages, because that breaks the ability to grep for them.
So, please don't break those strings across multiple lines. The same
goes for the similar rcu_lockdep_assert strings added in a previous
patch in this series.
- Josh Triplett
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/