Thank Paul for your encouragement and valuable advice I achieve great self improvement in studying and participating Linux RCU Also thank Neeraj for mutual interest in Linux RCU, your contribution makes me believe that even a small enhancement of code can still attract interest and draw favorable attention from peers. Cheers Zhouyi On Wed, Jan 13, 2021 at 1:50 AM Paul E. McKenney <paulmck@xxxxxxxxxx> wrote: > Good catch, applied, thank you! As usual, I edited a bit, so please > check below to see if I messed anything up. > > I did add Neeraj Upadhyay's Reported-by because he noted this, though you > beat him with a public posting, though mostly because I asked him whether > he could make this happen. I also added the Fixes, but could you please > do that in the future? You can use "git blame" or either "git log" and > "gitk" with appropriate options to find the offending commit. > > Thanx, Paul > > ------------------------------------------------------------------------ > > commit 3f91ff7fd4f76e7eb48bad79666c466bc3530324 > Author: Zhouyi Zhou <zhouzhouyi@xxxxxxxxx> > Date: Mon Jan 11 09:08:59 2021 +0800 > > rcu: Remove spurious instrumentation_end() in rcu_nmi_enter() > > In rcu_nmi_enter(), there is an erroneous instrumentation_end() in the > second branch of the "if" statement. Oddly enough, "objtool check -f > vmlinux.o" fails to complain because it is unable to correctly cover > all cases. Instead, objtool visits the third branch first, which marks > following trace_rcu_dyntick() as visited. This commit therefore removes > the spurious instrumentation_end(). > > Fixes: 04b25a495bd6 ("rcu: Mark rcu_nmi_enter() call to rcu_cleanup_after_idle() noinstr") > Reported-by Neeraj Upadhyay <neeraju@xxxxxxxxxxxxxx> > Signed-off-by: Zhouyi Zhou <zhouzhouyi@xxxxxxxxx> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index 63c6dba..e04e336 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -1050,7 +1050,6 @@ noinstr void rcu_nmi_enter(void) > } else if (!in_nmi()) { > instrumentation_begin(); > rcu_irq_enter_check_tick(); > - instrumentation_end(); > } else { > instrumentation_begin(); > }