projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: relayd: unbalanced RCU read lock/unlock
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
connection.c
diff --git
a/src/bin/lttng-relayd/connection.c
b/src/bin/lttng-relayd/connection.c
index 28d0cb311e3541fa552d1b224edb9c1acf3acf01..2376a3f29c973c45b3671e0eea413f06cea24deb 100644
(file)
--- a/
src/bin/lttng-relayd/connection.c
+++ b/
src/bin/lttng-relayd/connection.c
@@
-17,6
+17,7
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <common/common.h>
#include "connection.h"
#include <common/common.h>
#include "connection.h"
@@
-28,8
+29,7
@@
static void rcu_free_connection(struct rcu_head *head)
caa_container_of(head, struct relay_connection, rcu_node);
lttcomm_destroy_sock(conn->sock);
caa_container_of(head, struct relay_connection, rcu_node);
lttcomm_destroy_sock(conn->sock);
- free(conn->viewer_session);
- free(conn);
+ connection_free(conn);
}
struct relay_connection *connection_find_by_sock(struct lttng_ht *ht, int sock)
}
struct relay_connection *connection_find_by_sock(struct lttng_ht *ht, int sock)
@@
-68,16
+68,8
@@
void connection_delete(struct lttng_ht *ht, struct relay_connection *conn)
void connection_destroy(struct relay_connection *conn)
{
void connection_destroy(struct relay_connection *conn)
{
- struct relay_stream *stream, *tmp_stream;
-
assert(conn);
assert(conn);
- /* Clean up recv list of this connection if any. */
- cds_list_for_each_entry_safe(stream, tmp_stream, &conn->recv_head,
- recv_list) {
- cds_list_del(&stream->recv_list);
- }
-
call_rcu(&conn->rcu_node, rcu_free_connection);
}
call_rcu(&conn->rcu_node, rcu_free_connection);
}
@@
-108,5
+100,6
@@
void connection_free(struct relay_connection *conn)
{
assert(conn);
{
assert(conn);
+ free(conn->viewer_session);
free(conn);
}
free(conn);
}
This page took
0.025464 seconds
and
5
git commands to generate.