Fix: statedump: invalid read during iter_end
[lttng-ust.git] / src / lib / lttng-ust / lttng-ust-statedump.c
index a663487e3dd36762e9fe99ecbdaba639c4a23c75..309a98fa2201243913dbf09fcc16c8e2ae134338 100644 (file)
@@ -63,7 +63,7 @@ struct lttng_ust_dl_node {
 
 #define UST_DL_STATE_HASH_BITS 8
 #define UST_DL_STATE_TABLE_SIZE        (1 << UST_DL_STATE_HASH_BITS)
-struct cds_hlist_head dl_state_table[UST_DL_STATE_TABLE_SIZE];
+static struct cds_hlist_head dl_state_table[UST_DL_STATE_TABLE_SIZE];
 
 typedef void (*tracepoint_cb)(struct lttng_ust_session *session, void *priv);
 
@@ -423,10 +423,10 @@ void iter_end(struct dl_iterate_data *data, void *ip)
         */
        for (i = 0; i < UST_DL_STATE_TABLE_SIZE; i++) {
                struct cds_hlist_head *head;
-               struct lttng_ust_dl_node *e;
+               struct lttng_ust_dl_node *e, *tmp;
 
                head = &dl_state_table[i];
-               cds_hlist_for_each_entry_2(e, head, node) {
+               cds_hlist_for_each_entry_safe_2(e, tmp, head, node) {
                        if (e->marked) {
                                if (!e->traced) {
                                        trace_lib_load(&e->bin_data, ip);
@@ -554,10 +554,10 @@ void lttng_ust_dl_update(void *ip)
                return;
 
        /*
-        * Fixup lttng-ust TLS when called from dlopen/dlclose
-        * instrumentation.
+        * Force the allocation of lttng-ust TLS variables when called from
+        * dlopen/dlclose instrumentation.
         */
-       lttng_ust_fixup_tls();
+       lttng_ust_alloc_tls();
 
        data.exec_found = 0;
        data.first = true;
This page took 0.02381 seconds and 4 git commands to generate.