Hi Breno,

On 10/04/2025 14:22, Breno Leitao wrote:
> When CONFIG_PROVE_RCU_LIST is enabled, fprobe triggers the following
> warning:
> 
>     WARNING: suspicious RCU usage
>     kernel/trace/fprobe.c:457 RCU-list traversed in non-reader section!!
> 
>     other info that might help us debug this:
>       #1: ffffffff863c4e08 (fprobe_mutex){+.+.}-{4:4}, at: 
> fprobe_module_callback+0x7b/0x8c0
> 
>     Call Trace:
>       fprobe_module_callback
>       notifier_call_chain
>       blocking_notifier_call_chain
> 
> This warning occurs because fprobe_remove_node_in_module() traverses an
> RCU list using RCU primitives without holding an RCU read lock. However,
> the function is only called from fprobe_module_callback(), which holds
> the fprobe_mutex lock that provides sufficient protection for safely
> traversing the list.
> 
> Fix the warning by specifying the locking design to the
> CONFIG_PROVE_RCU_LIST mechanism. Add the lockdep_is_held() argument to
> hlist_for_each_entry_rcu() to inform the RCU checker that fprobe_mutex
> provides the required protection.

@Breno: thank you for the patch, I have it applied for a while on a
branch dedicated to our CI to avoid false positive reports.

Tested-by: Matthieu Baerts (NGI0) <[email protected]>


Hopefully this fix can be sent to Linus before the v6.15 release :)

Cheers,
Matt
-- 
Sponsored by the NGI0 Core fund.


Reply via email to