On Mon, Sep 21, 2026 at 05:20:55PM +0800, Ye Liu wrote: > From: Ye Liu <[email protected]> > > Replace the manual rcu_read_lock()/rcu_read_unlock() pair combined > with for_each_process_thread() loop in kernel/rcu/update.c with > for_each_process_thread_rculock(), which scopes the RCU read lock > to the loop body via scoped_guard(rcu). > > No functional change. > > Signed-off-by: Ye Liu <[email protected]> > Acked-by: Michal Hocko <[email protected]> > Reviewed-by: SJ Park <[email protected]> > Reviewed-by: Lorenzo Stoakes (ARM) <[email protected]> > Reviewed-by: Oleg Nesterov <[email protected]>
Reviewed-by: Paul E. McKenney <[email protected]> > --- > kernel/rcu/update.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c > index 2a778b8ab4ad..d8e0b5896db9 100644 > --- a/kernel/rcu/update.c > +++ b/kernel/rcu/update.c > @@ -548,15 +548,13 @@ void synchronize_rcu_trivial_preempt(void) > struct task_struct *t; > > smp_mb(); // Order prior accesses before grace-period start. > - rcu_read_lock(); // Protect task list. > - for_each_process_thread(g, t) { > + for_each_process_thread_rculock(g, t) { > if (t == current) > continue; // Don't deadlock on ourselves! > // Order later rcu_read_lock() on other tasks after QS. > while (smp_load_acquire(&t->rcu_trivial_preempt_nesting)) > continue; > } > - rcu_read_unlock(); > } > EXPORT_SYMBOL_GPL(synchronize_rcu_trivial_preempt); > #endif // #if IS_ENABLED(CONFIG_TRIVIAL_PREEMPT_RCU) > -- > 2.25.1 >
