Simplify rcu locking in viewer_list_sessions
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 17 May 2016 05:52:18 +0000 (01:52 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 17 May 2016 05:59:33 +0000 (01:59 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/bin/lttng-relayd/live.c

index f87e4baf0846ad9b666ac78ceb98cec6b4635247..598a5d8ff7fae3d7c25a99827e2b0c8fbba83746 100644 (file)
@@ -794,7 +794,7 @@ end:
 static
 int viewer_list_sessions(struct relay_connection *conn)
 {
-       int ret;
+       int ret = 0;
        struct lttng_viewer_list_sessions session_list;
        struct lttng_ht_iter iter;
        struct relay_session *session;
@@ -824,8 +824,7 @@ int viewer_list_sessions(struct relay_connection *conn)
                                new_buf_count * sizeof(*send_session_buf));
                        if (!newbuf) {
                                ret = -1;
-                               rcu_read_unlock();
-                               goto end_free;
+                               break;
                        }
                        send_session_buf = newbuf;
                        buf_count = new_buf_count;
@@ -835,14 +834,12 @@ int viewer_list_sessions(struct relay_connection *conn)
                                session->session_name,
                                sizeof(send_session->session_name))) {
                        ret = -1;
-                       rcu_read_unlock();
-                       goto end_free;
+                       break;
                }
                if (lttng_strncpy(send_session->hostname, session->hostname,
                                sizeof(send_session->hostname))) {
                        ret = -1;
-                       rcu_read_unlock();
-                       goto end_free;
+                       break;
                }
                send_session->id = htobe64(session->id);
                send_session->live_timer = htobe32(session->live_timer);
@@ -855,6 +852,9 @@ int viewer_list_sessions(struct relay_connection *conn)
                count++;
        }
        rcu_read_unlock();
+       if (ret < 0) {
+               goto end_free;
+       }
 
        session_list.sessions_count = htobe32(count);
 
This page took 0.028204 seconds and 5 git commands to generate.