Add missing module refcount to lttng_tracepoint_list_fops
[lttng-modules.git] / ltt-probes.c
index 249fc333d02b7cd9a95a79404085b815aa171c0f..668f6678ad3ec13c15cfb8518e8d20b32b5afa76 100644 (file)
@@ -4,6 +4,8 @@
  * Copyright 2010 (c) - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  *
  * Holds LTTng probes registry.
+ *
+ * Dual LGPL v2.1/GPL v2 license.
  */
 
 #include <linux/module.h>
@@ -90,6 +92,7 @@ void *tp_list_start(struct seq_file *m, loff_t *pos)
        struct lttng_probe_desc *probe_desc;
        int iter = 0, i;
 
+       mutex_lock(&probe_mutex);
        list_for_each_entry(probe_desc, &probe_list, head) {
                for (i = 0; i < probe_desc->nr_events; i++) {
                        if (iter++ >= *pos)
@@ -120,6 +123,7 @@ void *tp_list_next(struct seq_file *m, void *p, loff_t *ppos)
 static
 void tp_list_stop(struct seq_file *m, void *p)
 {
+       mutex_unlock(&probe_mutex);
 }
 
 static
@@ -127,6 +131,11 @@ int tp_list_show(struct seq_file *m, void *p)
 {
        const struct lttng_event_desc *probe_desc = p;
 
+       /*
+        * Don't export lttng internal events (metadata).
+        */
+       if (!strncmp(probe_desc->name, "lttng_", sizeof("lttng_") - 1))
+               return 0;
        seq_printf(m,   "event { name = %s; };\n",
                   probe_desc->name);
        return 0;
@@ -147,6 +156,7 @@ int lttng_tracepoint_list_open(struct inode *inode, struct file *file)
 }
 
 const struct file_operations lttng_tracepoint_list_fops = {
+       .owner = THIS_MODULE,
        .open = lttng_tracepoint_list_open,
        .read = seq_read,
        .llseek = seq_lseek,
This page took 0.023336 seconds and 4 git commands to generate.