On Mon, Jan 24, 2022 at 08:33:57AM +0300, Nikita Yushchenko wrote: > commit 0878355b51f5f26632e652c848a8e174bb02d22d upstream. > > If start_per_cpu_kthreads() called from osnoise_workload_start() returns > error, event hooks are left in broken state: unhook_irq_events() called > but unhook_thread_events() and unhook_softirq_events() not called, and > trace_osnoise_callback_enabled flag not cleared. > > On the next tracer enable, hooks get not installed due to > trace_osnoise_callback_enabled flag. > > And on the further tracer disable an attempt to remove non-installed > hooks happened, hitting a WARN_ON_ONCE() in tracepoint_remove_func(). > > Fix the error path by adding the missing part of cleanup. > While at this, introduce osnoise_unhook_events() to avoid code > duplication between this error path and normal tracer disable. > > Link: https://lkml.kernel.org/r/20220109153459.3701773-1-nikita.yushchenko@xxxxxxxxxxxxx > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: bce29ac9ce0b ("trace: Add osnoise tracer") > Acked-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> > Signed-off-by: Nikita Yushchenko <nikita.yushchenko@xxxxxxxxxxxxx> > Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx> > --- > kernel/trace/trace_osnoise.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) Now queued up, thanks. greg k-h