On Wed, Apr 15, 2026 at 10:39:33AM -0700, Paul E. McKenney wrote: > On Wed, Apr 15, 2026 at 07:08:44PM +0200, Pablo Neira Ayuso wrote: > > 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 that the list to splice is not > > empty. Note that __list_splice_rcu() has no documentation for this > > reason. > > > > Signed-off-by: Pablo Neira Ayuso <[email protected]> > > --- > > v2: including comments by Paul McKenney. > > > > Except, I have deliberately keep back the suggestion to squash > > __list_splice_rcu() into list_splice_rcu(), I instead removed > > the documentation for __list_splice_rcu(). I am looking > > at other existing list_splice*() function in list.h and rculist.h > > to get this aligned with __list_splice(), which also has no users > > in the tree and no documentation. I find it easier to read with > > __list_splice(), but if this explaination is not sound so... > > > > @Paul: I can post v3 squashing __list_splice_rcu(), just let me > > know. > > Removing the comment addresses most of my concerns. I do have a slight > but not overwhelming preference for the squashed version, but either way: > > Reviewed-by: Paul E. McKenney <[email protected]> > > Or if you want this to go in via RCU, please let us know. My guess is > that it would be easier for you to take it in with the code using it.
I'd prefer to take it through nf.git, I need this as a fix for an invalid use of list_splice() on a RCU-protected list. Thanks for your quick review Paul!
