*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <assert.h>
#include <inttypes.h>
#include <urcu/list.h>
/*
* Command LTTNG_ENABLE_EVENT processed by the client thread.
+ * We own filter, exclusion, and filter_expression.
*/
int cmd_enable_event(struct ltt_session *session, struct lttng_domain *domain,
char *channel_name, struct lttng_event *event,
/* At this point, the session and channel exist on the tracer */
ret = event_ust_enable_tracepoint(usess, uchan, event,
filter_expression, filter, exclusion);
+ /* We have passed ownership */
+ filter_expression = NULL;
+ filter = NULL;
+ exclusion = NULL;
if (ret != LTTNG_OK) {
goto error;
}
ret = cmd_enable_event(session, &tmp_dom, (char *) default_chan_name,
&uevent, filter_expression, filter, NULL, wpipe);
+ /* We have passed ownership */
+ filter_expression = NULL;
+ filter = NULL;
if (ret != LTTNG_OK && ret != LTTNG_ERR_UST_EVENT_ENABLED) {
goto error;
}
ret = LTTNG_OK;
error:
+ free(filter_expression);
+ free(filter);
+ free(exclusion);
rcu_read_unlock();
return ret;
}
* possible to enable channel thus inform the client.
*/
if (usess && usess->domain_global.channels) {
+ rcu_read_lock();
nb_chan += lttng_ht_get_count(usess->domain_global.channels);
+ rcu_read_unlock();
}
if (ksession) {
nb_chan += ksession->channel_count;