Re: [PATCH v3 1/7] livepatch: Fix NULL pointer dereference in klp_find_func()
Miroslav Benes <[email protected]> Tue, 23 Jun 2026 10:20:38 +0200 (CEST)
| Newsgroups | org.kernel.vger.live-patching |
|---|---|
| Message-ID | <[email protected]> |
> > Anyway, could you send the fix separately since it is an existing issue,
> > please?
>
> Does the following change look good to you ?
>
> diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
> index 28d15ba58a26..317a3c866c76 100644
> --- a/kernel/livepatch/core.c
> +++ b/kernel/livepatch/core.c
> @@ -799,9 +799,6 @@ void klp_free_replaced_patches_async(struct
> klp_patch *new_patch)
>
> static int klp_init_func(struct klp_object *obj, struct klp_func *func)
> {
> - if (!func->old_name)
> - return -EINVAL;
> -
> /*
> * NOPs get the address later. The patched module must be loaded,
> * see klp_init_object_loaded().
> @@ -1107,8 +1104,9 @@ static int __klp_enable_patch(struct klp_patch *patch)
> */
> int klp_enable_patch(struct klp_patch *patch)
> {
> - int ret;
> struct klp_object *obj;
> + struct klp_func *func;
> + int ret;
>
> if (!patch || !patch->mod || !patch->objs)
> return -EINVAL;
> @@ -1116,9 +1114,12 @@ int klp_enable_patch(struct klp_patch *patch)
> klp_for_each_object_static(patch, obj) {
> if (!obj->funcs)
> return -EINVAL;
> + klp_for_each_func_static(obj, func) {
> + if (!func->old_name)
> + return -EINVAL;
> + }
> }
>
> -
> if (!is_livepatch_module(patch->mod)) {
> pr_err("module %s is not marked as a livepatch module\n",
> patch->mod->name);
If you wrap it into klp_check_patch() which Petr proposed alongside
with all the checks at the beginning of klp_enable_patch() up to
is_livepatch_module(), then yes, I think.
Miroslav