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

From: Steven Rostedt
Date: Fri Aug 10 2018 - 12:35:21 EST


On Fri, 10 Aug 2018 12:30:42 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

Maybe I should say SRCU?

+/* 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