On Tue, 18 Nov 2025 16:49:50 +0900 "Masami Hiramatsu (Google)" <[email protected]> wrote:
> From: Masami Hiramatsu (Google) <[email protected]> > > Since tracer_init_tracefs_work_func() only updates the tracer options > for the global_trace, the instances created by the kernel cmdline > do not have those options. > > Fix to update tracer options for those boot-time created instances > to show those options. > > Signed-off-by: Masami Hiramatsu (Google) <[email protected]> > Fixes: f20a580627f43 ("ftrace: Allow instances to use function tracing") Actually, I think this should be: Fixes: 428add559b69 ("tracing: Have tracer option be instance specific") As it broke when we made function tracer options no longer global. > --- > kernel/trace/trace.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c > index 8ae95800592d..2e87060e1d5a 100644 > --- a/kernel/trace/trace.c > +++ b/kernel/trace/trace.c > @@ -10903,6 +10903,7 @@ static struct notifier_block trace_module_nb = { > > static __init void tracer_init_tracefs_work_func(struct work_struct *work) > { > + struct trace_array *tr; > > event_trace_init(); > > @@ -10937,7 +10938,8 @@ static __init void > tracer_init_tracefs_work_func(struct work_struct *work) > > create_trace_instances(NULL); > > - update_tracer_options(&global_trace); > + list_for_each_entry(tr, &ftrace_trace_arrays, list) > + update_tracer_options(tr); > } > > static __init int tracer_init_tracefs(void) Since update_trace_options() is only called by this function, instead of doing the loop here, change the function to be: static __init void update_tracer_options(void) { struct trace_array *tr; guard(mutex)(&trace_types_lock); tracer_options_updated = true; list_for_each_entry(tr, &ftrace_trace_arrays, list) __update_tracer_options(tr); } Thanks, -- Steve
