diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 08150e265761..69a298b07357 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h @@ -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); diff --git a/kernel/tracepoint.c b/kernel/tracepoint.c index 01b3bd84daa1..162be198a247 100644 --- a/kernel/tracepoint.c +++ b/kernel/tracepoint.c @@ -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);