Re: [PATCH v3 1/7] livepatch: Fix NULL pointer dereference in klp_find_func()
Petr Mladek <[email protected]> Wed, 24 Jun 2026 14:03:33 +0200
| Newsgroups | org.kernel.vger.live-patching |
|---|---|
| Message-ID | <[email protected]> |
On Tue 2026-06-23 10:20:38, Miroslav Benes wrote:
> > > 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.
+1
Best Regards,
Petr