lkml.org 
[lkml]   [2009]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH -tip] v3 Consolidate sparse and lockdep declarations in include/linux/rcupdate.h
On Mon, Aug 24, 2009 at 03:34:46PM +0800, Lai Jiangshan wrote:
> Paul E. McKenney wrote:
> > From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> >
> > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > ---

[ . . . ]

> > * rcu_read_lock_sched - mark the beginning of a RCU-classic critical section
> > @@ -160,10 +190,14 @@ extern int rcu_scheduler_active;
> > static inline void rcu_read_lock_sched(void)
> > {
> > preempt_disable();
> > + __acquire(RCU_SCHED);
> > + rcu_read_acquire();
> > }
> > static inline void rcu_read_lock_sched_notrace(void)
>
> It need be marked "notrace" too.

I guess I just need to grep for "_notrace(" in my code. ;-)

> > {
> > preempt_disable_notrace();
> > + __acquire(RCU_SCHED);
> > + rcu_read_acquire();
> > }
>
> It may cause infinity recursion.
> rcu_read_acquire() calls rcu_read_lock_sched_notrace()
> before current->lockdep_recursion is set to 1 when tracing in on,
> thus infinity recursion occurs.

That might explain Ingo's test results.

Thank you again, good catch!!!

Thanx, Paul


\
 
 \ /
  Last update: 2009-08-24 18:07    [W:0.233 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site