Fix: destroy chunk registry on element creation failure
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Mon, 9 Sep 2019 14:53:45 +0000 (10:53 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 19 Sep 2019 19:31:48 +0000 (15:31 -0400)
A failure path in trace_chunk_registry_ht_element_create() does not
destroy a newly created chunk registry, resulting in a leak.

The ownership of the registry is transfered to the element being
created as soon as possible. Error paths that release the reference on
the new element will then naturally clean-up the trace chunk registry.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-relayd/sessiond-trace-chunks.c

index 01d5b3c2d695583f6e6b09ee30ed4aafff2ab623..e7a7d112d93e586ee3ee256bee91a0efb4c09d07 100644 (file)
@@ -213,6 +213,7 @@ int trace_chunk_registry_ht_element_create(
        urcu_ref_init(&new_element->ref);
        cds_lfht_node_init(&new_element->ht_node);
        new_element->trace_chunk_registry = trace_chunk_registry;
+       trace_chunk_registry = NULL;
 
        /* Attempt to publish the new element. */
        rcu_read_lock();
@@ -261,6 +262,7 @@ end:
                ERR("Failed to create trace chunk registry for session daemon {%s}",
                                uuid_str);
        }
+       lttng_trace_chunk_registry_destroy(trace_chunk_registry);
        return ret;
 }
 
This page took 0.027812 seconds and 4 git commands to generate.