]> Gentwo Git Trees - linux/.git/commitdiff
srcu: Make grace-period determination use ssp->srcu_reader_flavor
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 5 Nov 2025 20:32:05 +0000 (12:32 -0800)
committerFrederic Weisbecker <frederic@kernel.org>
Wed, 5 Nov 2025 22:58:22 +0000 (23:58 +0100)
This commit causes the srcu_readers_unlock_idx() function to take the
srcu_struct structure's ->srcu_reader_flavor field into account.  This
ensures that structures defined via DEFINE_SRCU_FAST( or initialized via
init_srcu_struct_fast() have their grace periods use synchronize_srcu()
or synchronize_srcu_expedited() instead of smp_mb(), even before the
first SRCU reader has been entered.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: <bpf@vger.kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
kernel/rcu/srcutree.c

index 9869a13b8763421c162e58f9dd5a2acf43a03cd6..c29203b23d1ad78a00c1edaaef2dd50622c8c3bb 100644 (file)
@@ -490,7 +490,7 @@ static bool srcu_readers_lock_idx(struct srcu_struct *ssp, int idx, bool gp, uns
 static unsigned long srcu_readers_unlock_idx(struct srcu_struct *ssp, int idx, unsigned long *rdm)
 {
        int cpu;
-       unsigned long mask = 0;
+       unsigned long mask = ssp->srcu_reader_flavor;
        unsigned long sum = 0;
 
        for_each_possible_cpu(cpu) {