Lines Matching refs:func
89 struct klp_func *func; in klp_find_func() local
91 klp_for_each_func(obj, func) { in klp_find_func()
92 if ((strcmp(old_func->old_name, func->old_name) == 0) && in klp_find_func()
93 (old_func->old_sympos == func->old_sympos)) { in klp_find_func()
94 return func; in klp_find_func()
441 struct klp_func *func);
468 static void klp_free_func_nop(struct klp_func *func) in klp_free_func_nop() argument
470 kfree(func->old_name); in klp_free_func_nop()
471 kfree(func); in klp_free_func_nop()
477 struct klp_func *func; in klp_alloc_func_nop() local
479 func = kzalloc(sizeof(*func), GFP_KERNEL); in klp_alloc_func_nop()
480 if (!func) in klp_alloc_func_nop()
484 func->old_name = kstrdup(old_func->old_name, GFP_KERNEL); in klp_alloc_func_nop()
485 if (!func->old_name) { in klp_alloc_func_nop()
486 kfree(func); in klp_alloc_func_nop()
491 klp_init_func_early(obj, func); in klp_alloc_func_nop()
496 func->old_sympos = old_func->old_sympos; in klp_alloc_func_nop()
497 func->nop = true; in klp_alloc_func_nop()
499 return func; in klp_alloc_func_nop()
506 struct klp_func *func, *old_func; in klp_add_object_nops() local
517 func = klp_find_func(obj, old_func); in klp_add_object_nops()
518 if (func) in klp_add_object_nops()
521 func = klp_alloc_func_nop(old_func, obj); in klp_add_object_nops()
522 if (!func) in klp_add_object_nops()
583 struct klp_func *func; in klp_kobj_release_func() local
585 func = container_of(kobj, struct klp_func, kobj); in klp_kobj_release_func()
587 if (func->nop) in klp_kobj_release_func()
588 klp_free_func_nop(func); in klp_kobj_release_func()
598 struct klp_func *func, *tmp_func; in __klp_free_funcs() local
600 klp_for_each_func_safe(obj, func, tmp_func) { in __klp_free_funcs()
601 if (nops_only && !func->nop) in __klp_free_funcs()
604 list_del(&func->node); in __klp_free_funcs()
605 kobject_put(&func->kobj); in __klp_free_funcs()
612 struct klp_func *func; in klp_free_object_loaded() local
616 klp_for_each_func(obj, func) { in klp_free_object_loaded()
617 func->old_func = NULL; in klp_free_object_loaded()
619 if (func->nop) in klp_free_object_loaded()
620 func->new_func = NULL; in klp_free_object_loaded()
718 static int klp_init_func(struct klp_object *obj, struct klp_func *func) in klp_init_func() argument
720 if (!func->old_name) in klp_init_func()
727 if (!func->new_func && !func->nop) in klp_init_func()
730 if (strlen(func->old_name) >= KSYM_NAME_LEN) in klp_init_func()
733 INIT_LIST_HEAD(&func->stack_node); in klp_init_func()
734 func->patched = false; in klp_init_func()
735 func->transition = false; in klp_init_func()
742 return kobject_add(&func->kobj, &obj->kobj, "%s,%lu", in klp_init_func()
743 func->old_name, in klp_init_func()
744 func->old_sympos ? func->old_sympos : 1); in klp_init_func()
774 struct klp_func *func; in klp_init_object_loaded() local
789 klp_for_each_func(obj, func) { in klp_init_object_loaded()
790 ret = klp_find_object_symbol(obj->name, func->old_name, in klp_init_object_loaded()
791 func->old_sympos, in klp_init_object_loaded()
792 (unsigned long *)&func->old_func); in klp_init_object_loaded()
796 ret = kallsyms_lookup_size_offset((unsigned long)func->old_func, in klp_init_object_loaded()
797 &func->old_size, NULL); in klp_init_object_loaded()
800 func->old_name); in klp_init_object_loaded()
804 if (func->nop) in klp_init_object_loaded()
805 func->new_func = func->old_func; in klp_init_object_loaded()
807 ret = kallsyms_lookup_size_offset((unsigned long)func->new_func, in klp_init_object_loaded()
808 &func->new_size, NULL); in klp_init_object_loaded()
811 func->old_name); in klp_init_object_loaded()
821 struct klp_func *func; in klp_init_object() local
838 klp_for_each_func(obj, func) { in klp_init_object()
839 ret = klp_init_func(obj, func); in klp_init_object()
851 struct klp_func *func) in klp_init_func_early() argument
853 kobject_init(&func->kobj, &klp_ktype_func); in klp_init_func_early()
854 list_add_tail(&func->node, &obj->func_list); in klp_init_func_early()
868 struct klp_func *func; in klp_init_patch_early() local
887 klp_for_each_func_static(obj, func) { in klp_init_patch_early()
888 klp_init_func_early(obj, func); in klp_init_patch_early()