Re: [PATCH V5 12/14] trace: Protect tr->tracing_cpumask with get/put_online_cpus

From: Steven Rostedt
Date: Thu Jun 24 2021 - 17:39:09 EST


On Tue, 22 Jun 2021 16:42:30 +0200
Daniel Bristot de Oliveira <bristot@xxxxxxxxxx> wrote:

> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index 52fc9438b7b4..c14f33db147e 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -5053,7 +5053,13 @@ int tracing_set_cpumask(struct trace_array *tr,
> arch_spin_unlock(&tr->max_lock);
> local_irq_enable();
>
> + /*
> + * tracing_cpumask is read by tracers that support CPU
> + * hotplug.
> + */
> + get_online_cpus();
> cpumask_copy(tr->tracing_cpumask, tracing_cpumask_new);
> + put_online_cpus();
>
> return 0;

Hmm, the tracing_cpumask is only touched in he work function, with the
necessary locks. How is get_online_cpus() protecting it here?

That is, tracing_cpumask isn't touched in the path of bringing up or
taking down a CPU, and shouldn't be an issue here.

Should I just drop this patch?

-- Steve