On Wednesday, 12 June 2024 18:31:57 CEST Linus Lüssing wrote:
On Wed, Jun 12, 2024 at 09:06:25AM -0700, Paul E. McKenney wrote:
We are looking into nice ways of solving this, but in the meantime, yes, if you are RCU-freeing slab objects into a slab that is destroyed at module-unload time, you currently need to stick with call_rcu() and rcu_barrier().
We do have some potential solutions to allow use of kfree_rcu() with this sort of slab, but they are still strictly potential.
Apologies for my having failed to foresee this particular trap!
No worries, thanks for the help and clarification! This at least restored my sanity, was starting to doubt my understanding of RCU and the batman-adv code the longer I tried to find the issue in batman-adv :D.
Thanks Linus and Paul. I've queued up the revert. But feel free to submit a version with updated text in case you want to incorporate information from this thread.
Kind regards, Sven