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

Yang Yingliang posted 1 patch 4 years, 6 months ago
kernel/livepatch/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()
Posted by Yang Yingliang 4 years, 6 months ago
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 <hulkci@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
---
 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

Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()
Posted by David Vernet 4 years, 6 months ago
Yang Yingliang <yangyingliang@huawei.com> 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 <hulkci@huawei.com>
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> ---
>  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 <void@manifault.com>
Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()
Posted by Petr Mladek 4 years, 5 months ago
On Mon 2021-12-27 08:31:45, David Vernet wrote:
> Yang Yingliang <yangyingliang@huawei.com> 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 <hulkci@huawei.com>
> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> > ---
> >  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 <void@manifault.com>

Reviewed-by: Petr Mladek <pmladek@suse.com>

Best Regards,
Petr
Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()
Posted by Petr Mladek 4 years, 5 months ago
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 <hulkci@huawei.com>
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>

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

Best Regards,
Petr
Re: [PATCH -next] livepatch: Fix missing unlock on error in klp_enable_patch()
Posted by Petr Mladek 4 years, 5 months ago
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 <hulkci@huawei.com>
> > Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> 
> 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