2021-12-25 02:45:31

by Yang Yingliang

[permalink] [raw]
Subject: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()

Add missing unlock when try_module_get() fails in klp_enable_patch().

Fixes: bf01c2975925 ("livepatch: Fix kobject refcount bug on klp_init_patch_early failure path")
Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Yang Yingliang <[email protected]>
---
kernel/livepatch/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
index 23cf444091a8..01bfab7fe7c0 100644
--- a/kernel/livepatch/core.c
+++ b/kernel/livepatch/core.c
@@ -1047,8 +1047,10 @@ int klp_enable_patch(struct klp_patch *patch)
return -EINVAL;
}

- if (!try_module_get(patch->mod))
+ if (!try_module_get(patch->mod)) {
+ mutex_unlock(&klp_mutex);
return -ENODEV;
+ }

klp_init_patch_early(patch);

--
2.25.1



2021-12-27 16:31:50

by David Vernet

[permalink] [raw]
Subject: Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()

Yang Yingliang <[email protected]> wrote on Sat [2021-Dec-25 10:51:15 +0800]:
> Add missing unlock when try_module_get() fails in klp_enable_patch().
>
> Fixes: bf01c2975925 ("livepatch: Fix kobject refcount bug on klp_init_patch_early failure path")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Yang Yingliang <[email protected]>
> ---
> kernel/livepatch/core.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
> index 23cf444091a8..01bfab7fe7c0 100644
> --- a/kernel/livepatch/core.c
> +++ b/kernel/livepatch/core.c
> @@ -1047,8 +1047,10 @@ int klp_enable_patch(struct klp_patch *patch)
> return -EINVAL;
> }
>
> - if (!try_module_get(patch->mod))
> + if (!try_module_get(patch->mod)) {
> + mutex_unlock(&klp_mutex);
> return -ENODEV;
> + }
>
> klp_init_patch_early(patch);
>
> --
> 2.25.1
>

Apologies for the silly oversight. Thank you for the fix.

Acked-by: David Vernet <[email protected]>

2022-01-03 10:49:20

by Petr Mladek

[permalink] [raw]
Subject: Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()

On Mon 2021-12-27 08:31:45, David Vernet wrote:
> Yang Yingliang <[email protected]> wrote on Sat [2021-Dec-25 10:51:15 +0800]:
> > Add missing unlock when try_module_get() fails in klp_enable_patch().
> >
> > Fixes: bf01c2975925 ("livepatch: Fix kobject refcount bug on klp_init_patch_early failure path")
> > Reported-by: Hulk Robot <[email protected]>
> > Signed-off-by: Yang Yingliang <[email protected]>
> > ---
> > kernel/livepatch/core.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
> > index 23cf444091a8..01bfab7fe7c0 100644
> > --- a/kernel/livepatch/core.c
> > +++ b/kernel/livepatch/core.c
> > @@ -1047,8 +1047,10 @@ int klp_enable_patch(struct klp_patch *patch)
> > return -EINVAL;
> > }
> >
> > - if (!try_module_get(patch->mod))
> > + if (!try_module_get(patch->mod)) {
> > + mutex_unlock(&klp_mutex);
> > return -ENODEV;
> > + }
> >
> > klp_init_patch_early(patch);
> >
> > --
> > 2.25.1
> >
>
> Apologies for the silly oversight. Thank you for the fix.

And nobody caught it. I think that it was partly caused by
a pre-holiday loss of concentration :-/

> Acked-by: David Vernet <[email protected]>

Reviewed-by: Petr Mladek <[email protected]>

Best Regards,
Petr

2022-01-03 13:46:47

by Petr Mladek

[permalink] [raw]
Subject: Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()

On Sat 2021-12-25 10:51:15, Yang Yingliang wrote:
> Add missing unlock when try_module_get() fails in klp_enable_patch().
>
> Fixes: bf01c2975925 ("livepatch: Fix kobject refcount bug on klp_init_patch_early failure path")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Yang Yingliang <[email protected]>

JFYI, the patch has been committed into livepatch.git,
branch for-5.17/fixes.

Best Regards,
Petr

2022-01-04 13:09:08

by Petr Mladek

[permalink] [raw]
Subject: Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()

On Mon 2022-01-03 14:46:42, Petr Mladek wrote:
> On Sat 2021-12-25 10:51:15, Yang Yingliang wrote:
> > Add missing unlock when try_module_get() fails in klp_enable_patch().
> >
> > Fixes: bf01c2975925 ("livepatch: Fix kobject refcount bug on klp_init_patch_early failure path")
> > Reported-by: Hulk Robot <[email protected]>
> > Signed-off-by: Yang Yingliang <[email protected]>
>
> JFYI, the patch has been committed into livepatch.git,
> branch for-5.17/fixes.

Just for record. I had to rebase the branch for-5.17/fixes because of
missing Signed-off. I have updated Fixes: line to match the hash
of the rebased commit. I hope that this fixed all my pre-holidays
mistakes.

Best Regards,
Petr