Re: [PATCH 6.18.y 1/2] rculist: add list_splice_rcu() for private lists

From: Greg KH

Date: Fri Sep 25 2026 - 10:29:07 EST


On Fri, Sep 25, 2026 at 09:52:23AM +0200, Benjamin Robin (Schneider Electric) wrote:
> From: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
>
> [ Upstream commit f902877b635551513729bdf9a8d1422c4aab7741 ]
>
> This patch adds a helper function, list_splice_rcu(), to safely splice
> a private (non-RCU-protected) list into an RCU-protected list.
>
> The function ensures that only the pointer visible to RCU readers
> (prev->next) is updated using rcu_assign_pointer(), while the rest of
> the list manipulations are performed with regular assignments, as the
> source list is private and not visible to concurrent RCU readers.
>
> This is useful for moving elements from a private list into a global
> RCU-protected list, ensuring safe publication for RCU readers.
> Subsystems with some sort of batching mechanism from userspace can
> benefit from this new function.
>
> The function __list_splice_rcu() has been added for clarity and to
> follow the same pattern as in the existing list_splice*() interfaces,
> where there is a check to ensure that the list to splice is not
> empty. Note that __list_splice_rcu() has no documentation for this
> reason.
>
> Reviewed-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
> Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
> ---
> include/linux/rculist.h | 29 +++++++++++++++++++++++++++++
> 1 file changed, 29 insertions(+)

You did not sign off on this commit :(