Fix: initialize RCU callbacks with mixed LGPL/non-LGPL objects
[lttng-ust.git] / include / lttng / tracepoint.h
index 0bb5d6135b84700f33dcff02def3874e7c807a12..c80da9216dfdef1eaa1c9b16678188c77a9a2c08 100644 (file)
@@ -218,11 +218,9 @@ struct lttng_ust_tracepoint_dlopen {
        int (*tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start,
                int tracepoints_count);
        int (*tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start);
-#ifndef _LGPL_SOURCE
        void (*rcu_read_lock_sym_bp)(void);
        void (*rcu_read_unlock_sym_bp)(void);
        void *(*rcu_dereference_sym_bp)(void *p);
-#endif
 };
 
 extern struct lttng_ust_tracepoint_dlopen tracepoint_dlopen;
@@ -296,8 +294,12 @@ __tracepoints__init(void);
 static void
 __tracepoints__init(void)
 {
-       if (__tracepoint_registered++)
+       if (__tracepoint_registered++) {
+               if (!tracepoint_dlopen_ptr->liblttngust_handle)
+                       return;
+               __tracepoint__init_urcu_sym();
                return;
+       }
 
        if (!tracepoint_dlopen_ptr)
                tracepoint_dlopen_ptr = &tracepoint_dlopen;
This page took 0.025976 seconds and 4 git commands to generate.