projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: tests: integer too large for long type
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
trace-ust.c
diff --git
a/src/bin/lttng-sessiond/trace-ust.c
b/src/bin/lttng-sessiond/trace-ust.c
index ac980fd45fc6673b1008b4887255e3c9a14e339e..a3e25aa8adfed1532b95ffb22b67849f21e282fb 100644
(file)
--- a/
src/bin/lttng-sessiond/trace-ust.c
+++ b/
src/bin/lttng-sessiond/trace-ust.c
@@
-16,6
+16,7
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@
-202,6
+203,9
@@
error:
/*
* Lookup an agent in the session agents hash table by domain type and return
* the object if found else NULL.
/*
* Lookup an agent in the session agents hash table by domain type and return
* the object if found else NULL.
+ *
+ * RCU read side lock must be acquired before calling and only released
+ * once the agent is no longer in scope or being used.
*/
struct agent *trace_ust_find_agent(struct ltt_ust_session *session,
enum lttng_domain_type domain_type)
*/
struct agent *trace_ust_find_agent(struct ltt_ust_session *session,
enum lttng_domain_type domain_type)
@@
-362,6
+366,7
@@
error:
/*
* Allocate and initialize a ust event. Set name and event type.
/*
* Allocate and initialize a ust event. Set name and event type.
+ * We own filter_expression, filter, and exclusion.
*
* Return pointer to structure or NULL.
*/
*
* Return pointer to structure or NULL.
*/
@@
-419,11
+424,6
@@
struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev,
ERR("Unknown ust loglevel type (%d)", ev->loglevel_type);
goto error_free_event;
}
ERR("Unknown ust loglevel type (%d)", ev->loglevel_type);
goto error_free_event;
}
- /*
- * Fix for enabler race. Enable is now done explicitly by
- * sessiond after setting filter.
- */
- lue->attr.disabled = 1;
/* Same layout. */
lue->filter_expression = filter_expression;
/* Same layout. */
lue->filter_expression = filter_expression;
@@
-442,6
+442,9
@@
struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev,
error_free_event:
free(lue);
error:
error_free_event:
free(lue);
error:
+ free(filter_expression);
+ free(filter);
+ free(exclusion);
return NULL;
}
return NULL;
}
@@
-754,10
+757,16
@@
void trace_ust_destroy_session(struct ltt_ust_session *session)
/* Cleaning up UST domain */
destroy_domain_global(&session->domain_global);
/* Cleaning up UST domain */
destroy_domain_global(&session->domain_global);
+ rcu_read_lock();
cds_lfht_for_each_entry(session->agents->ht, &iter.iter, agt, node.node) {
cds_lfht_for_each_entry(session->agents->ht, &iter.iter, agt, node.node) {
- lttng_ht_del(session->agents, &iter);
+ int ret = lttng_ht_del(session->agents, &iter);
+
+ assert(!ret);
agent_destroy(agt);
}
agent_destroy(agt);
}
+ rcu_read_unlock();
+
+ ht_cleanup_push(session->agents);
/* Cleanup UID buffer registry object(s). */
cds_list_for_each_entry_safe(reg, sreg, &session->buffer_reg_uid_list,
/* Cleanup UID buffer registry object(s). */
cds_list_for_each_entry_safe(reg, sreg, &session->buffer_reg_uid_list,
This page took
0.0245300000000001 seconds
and
4
git commands to generate.