Fix: Missing RCU read lock in kernel_destroy_session()
[lttng-tools.git] / src / bin / lttng-sessiond / kernel.c
index 00bfbbc2be5400d460e2c7dd7c273335f7d444b4..6b404c0ed97f260d3517d91044315ff8877ec9d7 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #define _GNU_SOURCE
+#define _LGPL_SOURCE
 #include <errno.h>
 #include <fcntl.h>
 #include <stdlib.h>
@@ -173,6 +174,7 @@ error:
 /*
  * Create a kernel event, enable it to the kernel tracer and add it to the
  * channel event list of the kernel session.
+ * We own filter_expression and filter.
  */
 int kernel_create_event(struct lttng_event *ev,
                struct ltt_kernel_channel *channel)
@@ -792,6 +794,7 @@ void kernel_destroy_session(struct ltt_kernel_session *ksess)
                struct lttng_ht_iter iter;
 
                /* For each consumer socket. */
+               rcu_read_lock();
                cds_lfht_for_each_entry(ksess->consumer->socks->ht, &iter.iter,
                                socket, node.node) {
                        struct ltt_kernel_channel *chan;
@@ -805,6 +808,7 @@ void kernel_destroy_session(struct ltt_kernel_session *ksess)
                                }
                        }
                }
+               rcu_read_unlock();
        }
 
        /* Close any relayd session */
This page took 0.024425 seconds and 4 git commands to generate.