sessiond: fix: possible unaligned access in packed structure
[lttng-tools.git] / src / bin / lttng-sessiond / event.c
index f97148db113c2bf1c8f3cc32dd9b6dd38170f599..f32db4429d0333b28f5b25f2967130c10bc6a5a3 100644 (file)
@@ -69,7 +69,7 @@ static void add_unique_ust_event(struct lttng_ht *ht,
  * If event_name is NULL all events of the specified type are disabled.
  */
 int event_kernel_disable_event(struct ltt_kernel_channel *kchan,
-               char *event_name, enum lttng_event_type type)
+               const char *event_name, enum lttng_event_type type)
 {
        int ret, error = 0, found = 0;
        struct ltt_kernel_event *kevent;
@@ -172,7 +172,8 @@ int event_ust_enable_tracepoint(struct ltt_ust_session *usess,
        rcu_read_lock();
 
        uevent = trace_ust_find_event(uchan->events, event->name, filter,
-                       event->loglevel_type, event->loglevel, exclusion);
+                       (enum lttng_ust_loglevel_type) event->loglevel_type,
+                       event->loglevel, exclusion);
        if (!uevent) {
                ret = trace_ust_create_event(event, filter_expression,
                                filter, exclusion, internal_event, &uevent);
@@ -190,6 +191,7 @@ int event_ust_enable_tracepoint(struct ltt_ust_session *usess,
 
        if (uevent->enabled) {
                /* It's already enabled so everything is OK */
+               assert(!to_create);
                ret = LTTNG_ERR_UST_EVENT_ENABLED;
                goto end;
        }
@@ -257,7 +259,7 @@ error:
  * Disable UST tracepoint of a channel from a UST session.
  */
 int event_ust_disable_tracepoint(struct ltt_ust_session *usess,
-               struct ltt_ust_channel *uchan, char *event_name)
+               struct ltt_ust_channel *uchan, const char *event_name)
 {
        int ret;
        struct ltt_ust_event *uevent;
@@ -506,7 +508,8 @@ int event_agent_enable(struct ltt_ust_session *usess,
                        ret = LTTNG_ERR_NOMEM;
                        goto error;
                }
-
+               filter = NULL;
+               filter_expression = NULL;
                created = 1;
        }
 
@@ -533,13 +536,16 @@ int event_agent_enable(struct ltt_ust_session *usess,
                agent_add_event(aevent, agt);
        }
 
-end:
-       return LTTNG_OK;
+       ret = LTTNG_OK;
+       goto end;
 
 error:
        if (created) {
                agent_destroy_event(aevent);
        }
+end:
+       free(filter);
+       free(filter_expression);
        return ret;
 }
 
@@ -666,7 +672,7 @@ error:
  * Return LTTNG_OK on success or else a LTTNG_ERR* code.
  */
 int event_agent_disable(struct ltt_ust_session *usess, struct agent *agt,
-               char *event_name)
+               const char *event_name)
 {
        int ret = LTTNG_OK;
        struct agent_event *aevent;
This page took 0.024996 seconds and 4 git commands to generate.