Peter Zijlstra <peterz@xxxxxxxxxxxxx> writes: > On Tue, May 19, 2020 at 10:19:06PM +0200, Sebastian Andrzej Siewior wrote: >> @@ -64,6 +64,7 @@ struct radix_tree_preload { >> struct radix_tree_node *nodes; >> }; >> static DEFINE_PER_CPU(struct radix_tree_preload, radix_tree_preloads) = { 0, }; >> +static DEFINE_LOCAL_LOCK(radix_tree_preloads_lock); >> >> static inline struct radix_tree_node *entry_to_node(void *ptr) >> { > > So I'm all with Andrew on the naming and pass-by-pointer thing, but > also, the above is pretty crap. You want the local_lock to be in the > structure you're actually protecting, and there really isn't anything > stopping you from doing that. > > The below builds just fine and is ever so much more sensible. Right you are. It's pretty obvious now that you hit me over the head with it. Note to self: Remove the brown paperbag _before_ touching code.