Fix: destroy context hash table being NULL
[lttng-tools.git] / src / bin / lttng-sessiond / trace-ust.c
index 5a8fc7dd988e300a70e6fd56b86b8a7bab6bae74..1d48002d07297dad4ff88f8903c3d9ab422416b6 100644 (file)
@@ -85,8 +85,8 @@ error:
  *
  * Return pointer to structure or NULL.
  */
-struct ltt_ust_session *trace_ust_create_session(char *path, int session_id,
-               struct lttng_domain *domain)
+struct ltt_ust_session *trace_ust_create_session(char *path,
+               unsigned int session_id, struct lttng_domain *domain)
 {
        int ret;
        struct ltt_ust_session *lus;
@@ -250,6 +250,10 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev)
        lttng_ht_node_init_str(&lue->node, lue->attr.name);
        /* Alloc context hash tables */
        lue->ctx = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
+       if (lue->ctx == NULL) {
+               ERR("Unable to create context hash table for event %s", ev->name);
+               goto error_free_event;
+       }
 
        DBG2("Trace UST event %s, loglevel (%d,%d) created",
                lue->attr.name, lue->attr.loglevel_type,
@@ -258,7 +262,6 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev)
        return lue;
 
 error_free_event:
-       lttng_ht_destroy(lue->ctx);
        free(lue);
 error:
        return NULL;
@@ -459,8 +462,10 @@ static void destroy_channel_rcu(struct rcu_head *head)
  */
 void trace_ust_destroy_metadata(struct ltt_ust_metadata *metadata)
 {
+       if (!metadata->handle) {
+               return;
+       }
        DBG2("Trace UST destroy metadata %d", metadata->handle);
-
        free(metadata);
 }
 
@@ -542,7 +547,7 @@ void trace_ust_destroy_session(struct ltt_ust_session *session)
 
        rcu_read_lock();
 
-       DBG2("Trace UST destroy session %d", session->id);
+       DBG2("Trace UST destroy session %u", session->id);
 
        /* Cleaning up UST domain */
        destroy_domain_global(&session->domain_global);
This page took 0.024247 seconds and 4 git commands to generate.