On 6/24/26 11:30 PM, Pedro Falcato wrote: > On Mon, Jun 15, 2026 at 08:05:58PM +0900, Harry Yoo (Oracle) wrote: >> call_rcu() disables IRQs with local_irq_save() to protect its per-cpu >> data structures. Therefore, if IRQs are not disabled, they cannot be >> corrupted by reentrance into call_rcu(). So fall back to the deferred >> path only when !allow_spin && irqs_disabled(). >> >> The RCU subsystem does not guarantee this contractually, and this >> optimization relies on RCU's implementation details. Ideally, it should >> be removed once call_rcu_nolock() is supported by the RCU subsystem. >> >> Link: >> https://lore.kernel.org/linux-mm/caadnvqkrvd5zsnekbzzu7w86ghbghuug2pvzpgztngns+fg...@mail.gmail.com >> Suggested-by: Alexei Starovoitov <[email protected]> >> Signed-off-by: Harry Yoo (Oracle) <[email protected]> >> --- >> mm/slub.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/mm/slub.c b/mm/slub.c >> index b0d38d515386..6a3552b70683 100644 >> --- a/mm/slub.c >> +++ b/mm/slub.c >> @@ -6158,8 +6158,8 @@ bool __kfree_rcu_sheaf(struct kmem_cache *s, void >> *obj, bool allow_spin) >> if (likely(rcu_sheaf->size < s->sheaf_capacity)) { >> rcu_sheaf = NULL; >> } else { >> - if (unlikely(!allow_spin)) { >> - /* call_rcu() cannot be called in an unknown context */ >> + /* call_rcu() disables IRQs to protect percpu data structures */ >> + if (unlikely(!allow_spin && irqs_disabled())) { > > Perhaps this could be more neatly exposed by RCU? something like > maybe_in_call_rcu().
Make sense if we need to keep this optimization for a long time, but hopefully RCU would support call_rcu_nolock() soon (apparently Paul has a plan [1]), rather than introducing maybe_in_call_rcu() just to drop it soon. But I don't have a strong opinion on this and I'd leave that to RCU folks. > Also, it's a bit odd that you're introducing code and > then subsequently patching over it with an improvement. Maybe this could be > squashed into patch 3? I was hoping having it as a separate patch to make it easier for RCU folks to take a look and provide ack or nack :) [1] https://lore.kernel.org/linux-mm/03da8742-3790-4428-84b8-11911bf44c9e@paulmck-laptop/ -- Cheers, Harry / Hyeonggon
OpenPGP_signature.asc
Description: OpenPGP digital signature

