Re: [RFC][PATCH] tracepoints: Free early tracepoints after RCU is initialized

From: Paul E. McKenney
Date: Fri Aug 10 2018 - 13:07:17 EST


On Fri, Aug 10, 2018 at 12:35:17PM -0400, Steven Rostedt wrote:
> On Fri, 10 Aug 2018 12:30:42 -0400
> Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> Maybe I should say SRCU?

That would be an improvement. What, me read comments? ;-)

Thanx, Paul

> +/* SRCU is initialized at core_initcall */
> +postcore_initcall(release_early_probes);
> +
> static inline void release_probes(struct tracepoint_func *old)
> {
> if (old) {
> struct tp_probes *tp_probes = container_of(old,
> struct tp_probes, probes[0]);
> +
> + /*
> + * We can't free probes if SRCU is not initialized yet.
> + * Postpone the freeing till after SRCU is initialized.
> + */
> + if (unlikely(!ok_to_free_tracepoints)) {
> + tp_probes->rcu.next = early_probes;
> + early_probes = &tp_probes->rcu;
> + return;
> + }
> +
>
> -- Steve
>