[for-linus][PATCH 03/12] ftrace: Protect direct_functions in ftrace_find_rec_direct

From: Steven Rostedt

Date: Sat Aug 08 2026 - 22:33:03 EST


From: Leon Hwang <leon.hwang@xxxxxxxxx>

Fix accessing the __rcu pointer direct_functions with RCU protection.

Cc: stable@xxxxxxxxxxxxxxx
Link: https://patch.msgid.link/20260730150411.88667-2-leon.hwang@xxxxxxxxx
Fixes: d05cb470663a ("ftrace: Fix modification of direct_function hash while in use")
Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>
Suggested-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
Signed-off-by: Leon Hwang <leon.hwang@xxxxxxxxx>
Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
---
kernel/trace/ftrace.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 6c47a94f5924..c5d1d0d42ccc 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -2645,7 +2645,8 @@ unsigned long ftrace_find_rec_direct(unsigned long ip)
{
struct ftrace_func_entry *entry;

- entry = __ftrace_lookup_ip(direct_functions, ip);
+ guard(preempt_notrace)();
+ entry = __ftrace_lookup_ip(rcu_dereference_sched(direct_functions), ip);
if (!entry)
return 0;

--
2.53.0