Thread (4 messages) 4 messages, 3 authors, 2026-01-28

Re: [PATCH] uprobes: fix incorrect lockdep condition in filter_chain()

From: Breno Leitao <leitao@debian.org>
Date: 2026-01-28 17:51:46
Also in: linux-perf-users, lkml, stable

On Wed, Jan 28, 2026 at 09:23:45AM -0800, Andrii Nakryiko wrote:
On Wed, Jan 28, 2026 at 5:51 AM Oleg Nesterov [off-list ref] wrote:
quoted
On 01/28, Breno Leitao wrote:
quoted
The list_for_each_entry_rcu() in filter_chain() uses
rcu_read_lock_trace_held() as the lockdep condition, but the function
holds consumer_rwsem, not the RCU trace lock.

This gives me the following output when running with some locking debug
option enabled:

  kernel/events/uprobes.c:1141 RCU-list traversed in non-reader section!!
    filter_chain
    register_for_each_vma
    uprobe_unregister_nosync
    __probe_event_disable

Remove the incorrect lockdep condition since the rwsem provides
sufficient protection for the list traversal.
I hope Andrii will recheck, but looks obviously correct to me.
yeah, I did, and it also looks obviously correct to me, I didn't need
to use rcu flavor there in the first place, I think.

Acked-by: Andrii Nakryiko <andrii@kernel.org>
quoted
quoted
Fixes: 87195a1ee332a ("uprobes: switch to RCU Tasks Trace flavor for better performance")
This commit just change the __list_check_rcu() condition...

Perhaps
Fixes: cc01bd044e6a ("uprobes: travers uprobe's consumer list locklessly under SRCU protection")
yep, this one is the earliest change adding unnecessary rcu flavor of
list_for_each_entry
Ack. I will respin with the correct "fixes" tag.

--breno
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help