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

Reply via email to