On Fri, 27 Apr 2018 08:57:01 -0700 "Paul E. McKenney" <paul...@linux.vnet.ibm.com> wrote:
> > + if (preempt_on) { \ > > + WARN_ON_ONCE(in_nmi()); /* no srcu from nmi */ \ > > Very good on this check, thank you! I think you need to return and not call the read lock. if (WARN_ON_ONCE(in_nmi())) return; > > > + idx = srcu_read_lock(&tracepoint_srcu); \ > > Hmmm... Do I need to create a _notrace variant of srcu_read_lock() > and srcu_read_unlock()? I think so. -- Steve > > > + it_func_ptr = srcu_dereference((tp)->funcs, \ > > + &tracepoint_srcu); \ > > + } else { \ > > + rcu_read_lock_sched_notrace(); \ > > + it_func_ptr = \ > > + rcu_dereference_sched((tp)->funcs); \ > > + } \ > > + \