Re: [PATCH v2] tracing/osnoise: Properly unhook events if start_per_cpu_kthreads() fails

From: Daniel Bristot de Oliveira
Date: Mon Jan 10 2022 - 02:46:53 EST


On 1/9/22 16:34, Nikita Yushchenko wrote:
> 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.
>
> Fixes: bce29ac9ce0b ("trace: Add osnoise tracer")
> Signed-off-by: Nikita Yushchenko <nikita.yushchenko@xxxxxxxxxxxxx>

Acked-by: Daniel Bristot de Oliveira <bristot@xxxxxxxxxx>

Thanks Nikita!
-- Daniel