On 29 September 2026 22:08:49 BST, "Paul E. McKenney" <[email protected]> wrote: >On Mon, Sep 28, 2026 at 10:54:13AM +0800, KunWu Chan wrote: >> Thanks, Arnd. >> >> Tested on top of 1eccf02fb8d5 with CONFIG_PREEMPT_RCU=y: >> >> CONFIG_RT_MUTEXES=y: build passes >> CONFIG_RT_MUTEXES=n: fails without this patch, passes with it >> >> The failure is in tree_stall.h, where rt_mutex_owner() is used >> before tree_plugin.h includes rtmutex_common.h. This matches the >> reported failure, and the added include fixes it. >> >> Reviewed-by: Kunwu Chan <[email protected]> >> Tested-by: Kunwu Chan <[email protected]> > >Bradley and Kunwu, are you OK with my applying your tags to the commit >that I am merging this into? > >1eccf02fb8d5 ("rcu: Add running and boosted indications to RCU task stall >dump") >
I'm ok with it > Thanx, Paul > >> Thanks, >> Kunwu >> >> On Fri, Sep 25, 2026 at 9:39 PM Arnd Bergmann <[email protected]> wrote: >> > >> > From: Arnd Bergmann <[email protected]> >> > >> > The added call to rt_mutex_owner() makes this fail to build in >> > some configurations: >> > >> > In file included from kernel/rcu/tree.c:5121: >> > kernel/rcu/tree_stall.h:333:8: error: call to undeclared function >'rt_mutex_owner'; ISO C99 and later do not support implicit function >declarations [-Wimplicit-function-declaration] >> > 333 | if >(rt_mutex_owner(&rnp->boost_mtx.rtmutex) == t) >> > | ^ >> > kernel/rcu/tree_stall.h:333:48: error: comparison between pointer and >integer ('int' and 'struct task_struct *') >[-Werror,-Wpointer-integer-compare] >> > 333 | if >(rt_mutex_owner(&rnp->boost_mtx.rtmutex) == t) >> > | >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~ >> > In file included from kernel/rcu/tree.c:5124: >> > In file included from kernel/rcu/tree_plugin.h:14: >> > kernel/rcu/../locking/rtmutex_common.h:231:35: error: conflicting >types for 'rt_mutex_owner' >> > 231 | static inline struct task_struct *rt_mutex_owner(struct >rt_mutex_base *lock) >> > | ^ >> > kernel/rcu/tree_stall.h:333:8: note: previous implicit declaration is >here >> > 333 | if >(rt_mutex_owner(&rnp->boost_mtx.rtmutex) == t) >> > | ^ >> > >> > There are already a couple of inclusions of >"../locking/rtmutex_common.h", >> > so assume this is safe to do here. >> > >> > Fixes: 1eccf02fb8d5 ("rcu: Add running and boosted indications to RCU >task stall dump") >> > Signed-off-by: Arnd Bergmann <[email protected]> >> > --- >> > I wonder if it would be better to either move the rt_mutex_owner() >> > definition into a global header like include/linux/rtmutex.h, or to >> > move the code out of tree_stall.h into a .c file, as this feels like a >> > layering violation. >> > --- >> > kernel/rcu/tree_stall.h | 1 + >> > 1 file changed, 1 insertion(+) >> > >> > diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h >> > index 5dded1e89197..803a56af3259 100644 >> > --- a/kernel/rcu/tree_stall.h >> > +++ b/kernel/rcu/tree_stall.h >> > @@ -12,6 +12,7 @@ >> > #include <linux/rcu_notifier.h> >> > #include <linux/smp.h> >> > #include <linux/rtmutex.h> >> > +#include "../locking/rtmutex_common.h" >> > >> > >////////////////////////////////////////////////////////////////////////////// >> > // >> > -- >> > 2.53.0 >> > >> > > --- Thanks! "I'm not a very positive person" - Linus torvalds

