ftrace_mod
return ftrace_mod(ip, old_addr, new_addr);
return ftrace_mod(ip, old_addr, new_addr);
static void free_ftrace_mod(struct ftrace_mod_load *ftrace_mod)
list_del(&ftrace_mod->list);
kfree(ftrace_mod->module);
kfree(ftrace_mod->func);
kfree(ftrace_mod);
struct ftrace_mod_load *ftrace_mod;
ftrace_mod = kzalloc_obj(*ftrace_mod);
if (!ftrace_mod)
INIT_LIST_HEAD(&ftrace_mod->list);
ftrace_mod->func = kstrdup(func, GFP_KERNEL);
ftrace_mod->module = kstrdup(module, GFP_KERNEL);
ftrace_mod->enable = enable;
if (!ftrace_mod->func || !ftrace_mod->module)
list_add(&ftrace_mod->list, mod_head);
free_ftrace_mod(ftrace_mod);
struct ftrace_mod_load *ftrace_mod;
ftrace_mod = list_entry(iter->mod_list, struct ftrace_mod_load, list);
if (ftrace_mod->func)
seq_printf(m, "%s", ftrace_mod->func);
seq_printf(m, ":mod:%s\n", ftrace_mod->module);
struct ftrace_mod_load *ftrace_mod, *n;
list_for_each_entry_safe(ftrace_mod, n, head, list) {
if (strcmp(ftrace_mod->module, module) != 0)
(ftrace_mod->func &&
strcmp(ftrace_mod->func, func) == 0)) {
free_ftrace_mod(ftrace_mod);
struct ftrace_mod_load *ftrace_mod, *n;
list_for_each_entry_safe(ftrace_mod, n, head, list) {
if (strcmp(ftrace_mod->module, mod) != 0)
if (ftrace_mod->func)
func = kstrdup(ftrace_mod->func, GFP_KERNEL);
list_move(&ftrace_mod->list, &process_mods);
kfree(ftrace_mod->func);
ftrace_mod->func = func;
list_for_each_entry_safe(ftrace_mod, n, &process_mods, list) {
func = ftrace_mod->func;
free_ftrace_mod(ftrace_mod);