aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/livepatch/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/livepatch/core.c')
-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)
659 return -EINVAL; 659 return -EINVAL;
660 660
661 INIT_LIST_HEAD(&patch->list); 661 INIT_LIST_HEAD(&patch->list);
662 INIT_LIST_HEAD(&patch->obj_list);
662 patch->kobj_added = false; 663 patch->kobj_added = false;
663 patch->enabled = false; 664 patch->enabled = false;
664 patch->forced = false; 665 patch->forced = false;
665 INIT_WORK(&patch->free_work, klp_free_patch_work_fn); 666 INIT_WORK(&patch->free_work, klp_free_patch_work_fn);
666 init_completion(&patch->finish); 667 init_completion(&patch->finish);
667 668
668 klp_for_each_object(patch, obj) { 669 klp_for_each_object_static(patch, obj) {
669 if (!obj->funcs) 670 if (!obj->funcs)
670 return -EINVAL; 671 return -EINVAL;
671 672
673 INIT_LIST_HEAD(&obj->func_list);
672 obj->kobj_added = false; 674 obj->kobj_added = false;
675 list_add_tail(&obj->node, &patch->obj_list);
673 676
674 klp_for_each_func(obj, func) 677 klp_for_each_func_static(obj, func) {
675 func->kobj_added = false; 678 func->kobj_added = false;
679 list_add_tail(&func->node, &obj->func_list);
680 }
676 } 681 }
677 682
678 if (!try_module_get(patch->mod)) 683 if (!try_module_get(patch->mod))