diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index de2e2c5d64bb..b3af3d24286c 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -1178,7 +1178,7 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp) ruqp = per_cpu_ptr(&rcu_dynticks.rcu_urgent_qs, rdp->cpu); if (time_after(jiffies, rdp->rsp->gp_start + jtsq) && READ_ONCE(rdp->rcu_qs_ctr_snap) != per_cpu(rcu_dynticks.rcu_qs_ctr, rdp->cpu) && - READ_ONCE(rdp->gpnum) == rnp->gpnum && !rdp->gpwrap) { + rcu_seq_current(&rdp->gp_seq) == rnp->gp_seq && !rdp->gpwrap) { trace_rcu_fqs(rdp->rsp->name, rdp->gpnum, rdp->cpu, TPS("rqc")); rcu_gpnum_ovf(rnp, rdp); return 1;