Lines Matching refs:func

28 	struct klp_func *func;  in klp_find_ops()  local
31 func = list_first_entry(&ops->func_stack, struct klp_func, in klp_find_ops()
33 if (func->old_func == old_func) in klp_find_ops()
46 struct klp_func *func; in klp_ftrace_handler() local
62 func = list_first_or_null_rcu(&ops->func_stack, struct klp_func, in klp_ftrace_handler()
70 if (WARN_ON_ONCE(!func)) in klp_ftrace_handler()
86 if (unlikely(func->transition)) { in klp_ftrace_handler()
106 func = list_entry_rcu(func->stack_node.next, in klp_ftrace_handler()
109 if (&func->stack_node == &ops->func_stack) in klp_ftrace_handler()
118 if (func->nop) in klp_ftrace_handler()
121 ftrace_regs_set_instruction_pointer(fregs, (unsigned long)func->new_func); in klp_ftrace_handler()
127 static void klp_unpatch_func(struct klp_func *func) in klp_unpatch_func() argument
131 if (WARN_ON(!func->patched)) in klp_unpatch_func()
133 if (WARN_ON(!func->old_func)) in klp_unpatch_func()
136 ops = klp_find_ops(func->old_func); in klp_unpatch_func()
143 ftrace_loc = ftrace_location((unsigned long)func->old_func); in klp_unpatch_func()
150 list_del_rcu(&func->stack_node); in klp_unpatch_func()
154 list_del_rcu(&func->stack_node); in klp_unpatch_func()
157 func->patched = false; in klp_unpatch_func()
160 static int klp_patch_func(struct klp_func *func) in klp_patch_func() argument
165 if (WARN_ON(!func->old_func)) in klp_patch_func()
168 if (WARN_ON(func->patched)) in klp_patch_func()
171 ops = klp_find_ops(func->old_func); in klp_patch_func()
175 ftrace_loc = ftrace_location((unsigned long)func->old_func); in klp_patch_func()
178 func->old_name); in klp_patch_func()
186 ops->fops.func = klp_ftrace_handler; in klp_patch_func()
197 list_add_rcu(&func->stack_node, &ops->func_stack); in klp_patch_func()
202 func->old_name, ret); in klp_patch_func()
209 func->old_name, ret); in klp_patch_func()
216 list_add_rcu(&func->stack_node, &ops->func_stack); in klp_patch_func()
219 func->patched = true; in klp_patch_func()
224 list_del_rcu(&func->stack_node); in klp_patch_func()
232 struct klp_func *func; in __klp_unpatch_object() local
234 klp_for_each_func(obj, func) { in __klp_unpatch_object()
235 if (nops_only && !func->nop) in __klp_unpatch_object()
238 if (func->patched) in __klp_unpatch_object()
239 klp_unpatch_func(func); in __klp_unpatch_object()
254 struct klp_func *func; in klp_patch_object() local
260 klp_for_each_func(obj, func) { in klp_patch_object()
261 ret = klp_patch_func(func); in klp_patch_object()