tracepoint: Simplify tracepoint module search
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Wed, 9 Apr 2014 00:09:40 +0000 (20:09 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 9 Apr 2014 00:45:34 +0000 (20:45 -0400)
Instead of copying the num_tracepoints and tracepoints_ptrs from
the module structure to the tp_mod structure, which only uses it to
find the module associated to tracepoints of modules that are coming
and going, simply copy the pointer to the module struct to the tracepoint
tp_module structure.

Also removed un-needed brackets around an if statement.

Link: http://lkml.kernel.org/r/20140408201705.4dad2c4a@gandalf.local.home
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
include/linux/tracepoint.h
kernel/tracepoint.c

index 08150e2657614a9bcd191144f54a27e4aa7d16bc..69a298b073570e48b879caeca6ce457739a7a959 100644 (file)
@@ -47,8 +47,7 @@ for_each_kernel_tracepoint(void (*fct)(struct tracepoint *tp, void *priv),
 #ifdef CONFIG_MODULES
 struct tp_module {
        struct list_head list;
-       unsigned int num_tracepoints;
-       struct tracepoint * const *tracepoints_ptrs;
+       struct module *mod;
 };
 
 bool trace_module_has_bad_taint(struct module *mod);
index 01b3bd84daa192ba5fec7d7ed0893d4944090e4e..162be198a247fc56edebdbc45df7b4350eddb644 100644 (file)
@@ -374,8 +374,7 @@ static int tracepoint_module_coming(struct module *mod)
                ret = -ENOMEM;
                goto end;
        }
-       tp_mod->num_tracepoints = mod->num_tracepoints;
-       tp_mod->tracepoints_ptrs = mod->tracepoints_ptrs;
+       tp_mod->mod = mod;
        list_add_tail(&tp_mod->list, &tracepoint_module_list);
        blocking_notifier_call_chain(&tracepoint_notify_list,
                        MODULE_STATE_COMING, tp_mod);
@@ -393,7 +392,7 @@ static void tracepoint_module_going(struct module *mod)
 
        mutex_lock(&tracepoint_module_list_mutex);
        list_for_each_entry(tp_mod, &tracepoint_module_list, list) {
-               if (tp_mod->tracepoints_ptrs == mod->tracepoints_ptrs) {
+               if (tp_mod->mod == mod) {
                        blocking_notifier_call_chain(&tracepoint_notify_list,
                                        MODULE_STATE_GOING, tp_mod);
                        list_del(&tp_mod->list);
@@ -447,9 +446,9 @@ static __init int init_tracepoints(void)
        int ret;
 
        ret = register_module_notifier(&tracepoint_module_nb);
-       if (ret) {
+       if (ret)
                pr_warning("Failed to register tracepoint module enter notifier\n");
-       }
+
        return ret;
 }
 __initcall(init_tracepoints);