On Fri, 13 Feb 2026 10:34:24 +0800 (CST) <[email protected]> wrote:
> From: Shengming Hu <[email protected]> > > When registering a second fgraph callback, direct path is disabled > and array loop is used instead. > When ftrace_graph_active falls back to one, we try to re-enable direct > mode via ftrace_graph_enable_direct(true, ...). > But ftrace_graph_enable_direct() incorrectly disables the static key > rather than enabling it. > This leaves fgraph_do_direct permanently off after first multi-callback > transition, so direct fast mode is never restored. Good catch! > > Fixes: cc60ee813b503 ("function_graph: Use static_call and branch to optimize > entry function") > Signed-off-by: Shengming Hu <[email protected]> > --- > kernel/trace/fgraph.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/trace/fgraph.c b/kernel/trace/fgraph.c > index cc48d16be43e..4df766c690f9 100644 > --- a/kernel/trace/fgraph.c > +++ b/kernel/trace/fgraph.c > @@ -1303,7 +1303,7 @@ static void ftrace_graph_enable_direct(bool > enable_branch, struct fgraph_ops *go > static_call_update(fgraph_func, func); > static_call_update(fgraph_retfunc, retfunc); > if (enable_branch) > - static_branch_disable(&fgraph_do_direct); > + static_branch_enable(&fgraph_do_direct); > } Your email client killed your patch. it has huge white-space damage. But because it's such a trivial change, I'll fix it up for you. But next time please make sure your email client doesn't corrupt your patches. Thanks, -- Steve > > static void ftrace_graph_disable_direct(bool disable_branch) > -- > 2.25.1
