summaryrefslogtreecommitdiff
path: root/kernel/livepatch
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/livepatch')
-rw-r--r--kernel/livepatch/core.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index bd41b03a72d5..37d0d3645fa6 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -659,20 +659,25 @@ static int klp_init_patch_early(struct klp_patch *patch)
return -EINVAL;
INIT_LIST_HEAD(&patch->list);
+ INIT_LIST_HEAD(&patch->obj_list);
patch->kobj_added = false;
patch->enabled = false;
patch->forced = false;
INIT_WORK(&patch->free_work, klp_free_patch_work_fn);
init_completion(&patch->finish);
- klp_for_each_object(patch, obj) {
+ klp_for_each_object_static(patch, obj) {
if (!obj->funcs)
return -EINVAL;
+ INIT_LIST_HEAD(&obj->func_list);
obj->kobj_added = false;
+ list_add_tail(&obj->node, &patch->obj_list);
- klp_for_each_func(obj, func)
+ klp_for_each_func_static(obj, func) {
func->kobj_added = false;
+ list_add_tail(&func->node, &obj->func_list);
+ }
}
if (!try_module_get(patch->mod))