Skip to content

Commit 384c829

Browse files
rostedtgregkh
authored andcommitted
tracing: Fix using ret variable in tracing_set_tracer()
commit 22bec11 upstream. When the function tracing_set_tracer() switched over to using the guard() infrastructure, it did not need to save the 'ret' variable and would just return the value when an error arised, instead of setting ret and jumping to an out label. When CONFIG_TRACER_SNAPSHOT is enabled, it had code that expected the "ret" variable to be initialized to zero and had set 'ret' while holding an arch_spin_lock() (not used by guard), and then upon releasing the lock it would check 'ret' and exit if set. But because ret was only set when an error occurred while holding the locks, 'ret' would be used uninitialized if there was no error. The code in the CONFIG_TRACER_SNAPSHOT block should be self contain. Make sure 'ret' is also set when no error occurred. Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Link: https://lore.kernel.org/20250106111143.2f90ff65@gandalf.local.home Reported-by: kernel test robot <lkp@intel.com> Reported-by: Dan Carpenter <dan.carpenter@linaro.org> Closes: https://lore.kernel.org/r/202412271654.nJVBuwmF-lkp@intel.com/ Fixes: d33b10c ("tracing: Switch trace.c code over to use guard()") Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 67cb8ea commit 384c829

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

kernel/trace/trace.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6125,8 +6125,7 @@ int tracing_set_tracer(struct trace_array *tr, const char *buf)
61256125
if (t->use_max_tr) {
61266126
local_irq_disable();
61276127
arch_spin_lock(&tr->max_lock);
6128-
if (tr->cond_snapshot)
6129-
ret = -EBUSY;
6128+
ret = tr->cond_snapshot ? -EBUSY : 0;
61306129
arch_spin_unlock(&tr->max_lock);
61316130
local_irq_enable();
61326131
if (ret)

0 commit comments

Comments
 (0)