Fix: missing rcu_read_lock when calling trace_ust_find_agent()
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 13 Nov 2014 21:23:04 +0000 (16:23 -0500)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Sun, 16 Nov 2014 12:21:09 +0000 (07:21 -0500)
Added a comment to note that this function is assumed to be
called with the rcu_read_lock held.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-sessiond/agent-thread.c
src/bin/lttng-sessiond/trace-ust.c

index 0e827a4456d4c0ea9c37b54818bbcb6ba4c5e7a7..56613a54f605853ecfab18867b37e621681a34e5 100644 (file)
@@ -60,10 +60,12 @@ static void update_agent_app(struct agent_app *app)
                if (session->ust_session) {
                        struct agent *agt;
 
+                       rcu_read_lock();
                        agt = trace_ust_find_agent(session->ust_session, app->domain);
                        if (agt) {
                                agent_update(agt, app->sock->fd);
                        }
+                       rcu_read_unlock();
                }
                session_unlock(session);
        }
index ac980fd45fc6673b1008b4887255e3c9a14e339e..6618cdb09e30316f9eb6b6d4869f29d3f4728df3 100644 (file)
@@ -202,6 +202,9 @@ error:
 /*
  * 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)
This page took 0.026842 seconds and 4 git commands to generate.