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
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]>
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
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
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