On Mon, Jul 20, 2026 at 05:49:58PM +0800, Zqiang wrote:
> This 'commit 1612160b9127 ("rcu-tasks: Eliminate deadlocks involving
> do_exit() and RCU tasks")' has reimplemented the rcu_tasks_postscan(),
> and the synchronize_srcu() has been removed, this commit therefore
> rename tasks_rcu_exit_srcu_stall_timer to tasks_rcu_exit_stall_timer.
>
> Signed-off-by: Zqiang <[email protected]>
Looks good, thank you!
I have pulled in this one and these two for further review and testing:
d5dc5dcbb734 ("rcu-tasks: Fix some comments for call_rcu_tasks() and
call_rcu_tasks_rude()")
2e0af5dcb796 ("rcu: Remove unused rdp parameter from
rcu_check_gp_start_stallZ()")
There is some chance of these making the upcoming v7.3 merge window,
but no promises.
Thanx, Paul
> ---
> kernel/rcu/tasks.h | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
> index ff803871b577..23c6a2fed487 100644
> --- a/kernel/rcu/tasks.h
> +++ b/kernel/rcu/tasks.h
> @@ -155,8 +155,8 @@ static struct rcu_tasks rt_name =
> \
> #ifdef CONFIG_TASKS_RCU
>
> /* Report delay of scan exiting tasklist in rcu_tasks_postscan(). */
> -static void tasks_rcu_exit_srcu_stall(struct timer_list *unused);
> -static DEFINE_TIMER(tasks_rcu_exit_srcu_stall_timer,
> tasks_rcu_exit_srcu_stall);
> +static void tasks_rcu_exit_stall(struct timer_list *unused);
> +static DEFINE_TIMER(tasks_rcu_exit_stall_timer, tasks_rcu_exit_stall);
> #endif
>
> /* Control stall timeouts. Disable with <= 0, otherwise jiffies till stall.
> */
> @@ -1032,8 +1032,8 @@ static void rcu_tasks_postscan(struct list_head *hop)
> int rtsi = READ_ONCE(rcu_task_stall_info);
>
> if (!IS_ENABLED(CONFIG_TINY_RCU)) {
> - tasks_rcu_exit_srcu_stall_timer.expires = jiffies + rtsi;
> - add_timer(&tasks_rcu_exit_srcu_stall_timer);
> + tasks_rcu_exit_stall_timer.expires = jiffies + rtsi;
> + add_timer(&tasks_rcu_exit_stall_timer);
> }
>
> /*
> @@ -1086,7 +1086,7 @@ static void rcu_tasks_postscan(struct list_head *hop)
> }
>
> if (!IS_ENABLED(CONFIG_TINY_RCU))
> - timer_delete_sync(&tasks_rcu_exit_srcu_stall_timer);
> + timer_delete_sync(&tasks_rcu_exit_stall_timer);
> }
>
> /* See if tasks are still holding out, complain if so. */
> @@ -1158,7 +1158,7 @@ static void rcu_tasks_postgp(struct rcu_tasks *rtp)
> synchronize_rcu();
> }
>
> -static void tasks_rcu_exit_srcu_stall(struct timer_list *unused)
> +static void tasks_rcu_exit_stall(struct timer_list *unused)
> {
> #ifndef CONFIG_TINY_RCU
> int rtsi;
> @@ -1168,8 +1168,8 @@ static void tasks_rcu_exit_srcu_stall(struct timer_list
> *unused)
> __func__, rcu_tasks.kname, rcu_tasks.tasks_gp_seq,
> tasks_gp_state_getname(&rcu_tasks), jiffies -
> rcu_tasks.gp_jiffies);
> pr_info("Please check any exiting tasks stuck between calls to
> exit_tasks_rcu_start() and exit_tasks_rcu_finish()\n");
> - tasks_rcu_exit_srcu_stall_timer.expires = jiffies + rtsi;
> - add_timer(&tasks_rcu_exit_srcu_stall_timer);
> + tasks_rcu_exit_stall_timer.expires = jiffies + rtsi;
> + add_timer(&tasks_rcu_exit_stall_timer);
> #endif // #ifndef CONFIG_TINY_RCU
> }
>
> --
> 2.17.1
>