Loading kernel/module.c +0 −5 Original line number Diff line number Diff line Loading @@ -2187,11 +2187,6 @@ static noinline struct module *load_module(void __user *umod, debug = section_objs(hdr, sechdrs, secstrings, "__verbose", sizeof(*debug), &num_debug); dynamic_printk_setup(debug, num_debug); #ifdef CONFIG_TRACEPOINTS tracepoint_update_probe_range(mod->tracepoints, mod->tracepoints + mod->num_tracepoints); #endif } /* sechdrs[0].sh_size is always zero */ Loading kernel/tracepoint.c +29 −0 Original line number Diff line number Diff line Loading @@ -541,3 +541,32 @@ void tracepoint_iter_reset(struct tracepoint_iter *iter) iter->tracepoint = NULL; } EXPORT_SYMBOL_GPL(tracepoint_iter_reset); int tracepoint_module_notify(struct notifier_block *self, unsigned long val, void *data) { struct module *mod = data; switch (val) { case MODULE_STATE_COMING: tracepoint_update_probe_range(mod->tracepoints, mod->tracepoints + mod->num_tracepoints); break; case MODULE_STATE_GOING: tracepoint_update_probe_range(mod->tracepoints, mod->tracepoints + mod->num_tracepoints); break; } return 0; } struct notifier_block tracepoint_module_nb = { .notifier_call = tracepoint_module_notify, .priority = 0, }; static int init_tracepoints(void) { return register_module_notifier(&tracepoint_module_nb); } __initcall(init_tracepoints); Loading
kernel/module.c +0 −5 Original line number Diff line number Diff line Loading @@ -2187,11 +2187,6 @@ static noinline struct module *load_module(void __user *umod, debug = section_objs(hdr, sechdrs, secstrings, "__verbose", sizeof(*debug), &num_debug); dynamic_printk_setup(debug, num_debug); #ifdef CONFIG_TRACEPOINTS tracepoint_update_probe_range(mod->tracepoints, mod->tracepoints + mod->num_tracepoints); #endif } /* sechdrs[0].sh_size is always zero */ Loading
kernel/tracepoint.c +29 −0 Original line number Diff line number Diff line Loading @@ -541,3 +541,32 @@ void tracepoint_iter_reset(struct tracepoint_iter *iter) iter->tracepoint = NULL; } EXPORT_SYMBOL_GPL(tracepoint_iter_reset); int tracepoint_module_notify(struct notifier_block *self, unsigned long val, void *data) { struct module *mod = data; switch (val) { case MODULE_STATE_COMING: tracepoint_update_probe_range(mod->tracepoints, mod->tracepoints + mod->num_tracepoints); break; case MODULE_STATE_GOING: tracepoint_update_probe_range(mod->tracepoints, mod->tracepoints + mod->num_tracepoints); break; } return 0; } struct notifier_block tracepoint_module_nb = { .notifier_call = tracepoint_module_notify, .priority = 0, }; static int init_tracepoints(void) { return register_module_notifier(&tracepoint_module_nb); } __initcall(init_tracepoints);