On Fri, 10 Aug 2018 12:30:42 -0400
Steven Rostedt <[email protected]> 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

Reply via email to