Lines Matching refs:func
90 struct klp_func *func; in klp_find_func() local
92 klp_for_each_func(obj, func) { in klp_find_func()
93 if ((strcmp(old_func->old_name, func->old_name) == 0) && in klp_find_func()
94 (old_func->old_sympos == func->old_sympos)) { in klp_find_func()
95 return func; in klp_find_func()
480 struct klp_func *func);
507 static void klp_free_func_nop(struct klp_func *func) in klp_free_func_nop() argument
509 kfree(func->old_name); in klp_free_func_nop()
510 kfree(func); in klp_free_func_nop()
516 struct klp_func *func; in klp_alloc_func_nop() local
518 func = kzalloc(sizeof(*func), GFP_KERNEL); in klp_alloc_func_nop()
519 if (!func) in klp_alloc_func_nop()
523 func->old_name = kstrdup(old_func->old_name, GFP_KERNEL); in klp_alloc_func_nop()
524 if (!func->old_name) { in klp_alloc_func_nop()
525 kfree(func); in klp_alloc_func_nop()
530 klp_init_func_early(obj, func); in klp_alloc_func_nop()
535 func->old_sympos = old_func->old_sympos; in klp_alloc_func_nop()
536 func->nop = true; in klp_alloc_func_nop()
538 return func; in klp_alloc_func_nop()
545 struct klp_func *func, *old_func; in klp_add_object_nops() local
556 func = klp_find_func(obj, old_func); in klp_add_object_nops()
557 if (func) in klp_add_object_nops()
560 func = klp_alloc_func_nop(old_func, obj); in klp_add_object_nops()
561 if (!func) in klp_add_object_nops()
623 struct klp_func *func; in klp_kobj_release_func() local
625 func = container_of(kobj, struct klp_func, kobj); in klp_kobj_release_func()
627 if (func->nop) in klp_kobj_release_func()
628 klp_free_func_nop(func); in klp_kobj_release_func()
638 struct klp_func *func, *tmp_func; in __klp_free_funcs() local
640 klp_for_each_func_safe(obj, func, tmp_func) { in __klp_free_funcs()
641 if (nops_only && !func->nop) in __klp_free_funcs()
644 list_del(&func->node); in __klp_free_funcs()
645 kobject_put(&func->kobj); in __klp_free_funcs()
652 struct klp_func *func; in klp_free_object_loaded() local
656 klp_for_each_func(obj, func) { in klp_free_object_loaded()
657 func->old_func = NULL; in klp_free_object_loaded()
659 if (func->nop) in klp_free_object_loaded()
660 func->new_func = NULL; in klp_free_object_loaded()
758 static int klp_init_func(struct klp_object *obj, struct klp_func *func) in klp_init_func() argument
760 if (!func->old_name) in klp_init_func()
767 if (!func->new_func && !func->nop) in klp_init_func()
770 if (strlen(func->old_name) >= KSYM_NAME_LEN) in klp_init_func()
773 INIT_LIST_HEAD(&func->stack_node); in klp_init_func()
774 func->patched = false; in klp_init_func()
775 func->transition = false; in klp_init_func()
782 return kobject_add(&func->kobj, &obj->kobj, "%s,%lu", in klp_init_func()
783 func->old_name, in klp_init_func()
784 func->old_sympos ? func->old_sympos : 1); in klp_init_func()
827 struct klp_func *func; in klp_init_object_loaded() local
842 klp_for_each_func(obj, func) { in klp_init_object_loaded()
843 ret = klp_find_object_symbol(obj->name, func->old_name, in klp_init_object_loaded()
844 func->old_sympos, in klp_init_object_loaded()
845 (unsigned long *)&func->old_func); in klp_init_object_loaded()
849 ret = kallsyms_lookup_size_offset((unsigned long)func->old_func, in klp_init_object_loaded()
850 &func->old_size, NULL); in klp_init_object_loaded()
853 func->old_name); in klp_init_object_loaded()
857 if (func->nop) in klp_init_object_loaded()
858 func->new_func = func->old_func; in klp_init_object_loaded()
860 ret = kallsyms_lookup_size_offset((unsigned long)func->new_func, in klp_init_object_loaded()
861 &func->new_size, NULL); in klp_init_object_loaded()
864 func->old_name); in klp_init_object_loaded()
874 struct klp_func *func; in klp_init_object() local
891 klp_for_each_func(obj, func) { in klp_init_object()
892 ret = klp_init_func(obj, func); in klp_init_object()
904 struct klp_func *func) in klp_init_func_early() argument
906 kobject_init(&func->kobj, &klp_ktype_func); in klp_init_func_early()
907 list_add_tail(&func->node, &obj->func_list); in klp_init_func_early()
921 struct klp_func *func; in klp_init_patch_early() local
934 klp_for_each_func_static(obj, func) { in klp_init_patch_early()
935 klp_init_func_early(obj, func); in klp_init_patch_early()