tracing/user_events: Fix memory leak in user_event_create()

Message ID 20221115014445.158419-1-xiujianfeng@huawei.com
State New
Headers
Series tracing/user_events: Fix memory leak in user_event_create() |

Commit Message

Xiu Jianfeng Nov. 15, 2022, 1:44 a.m. UTC
  Before current_user_event_group(), it has allocated memory and save it
in @name, this should freed before return error.

Fixes: e5d271812e7a ("tracing/user_events: Move pages/locks into groups to prepare for namespaces")
Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
---
 kernel/trace/trace_events_user.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Masami Hiramatsu (Google) Nov. 15, 2022, 3:07 p.m. UTC | #1
On Tue, 15 Nov 2022 09:44:45 +0800
Xiu Jianfeng <xiujianfeng@huawei.com> wrote:

> Before current_user_event_group(), it has allocated memory and save it
> in @name, this should freed before return error.
> 
> Fixes: e5d271812e7a ("tracing/user_events: Move pages/locks into groups to prepare for namespaces")
> Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>

This looks good to me.

Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Thanks,

> ---
>  kernel/trace/trace_events_user.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
> index ae78c2d53c8a..539b08ae7020 100644
> --- a/kernel/trace/trace_events_user.c
> +++ b/kernel/trace/trace_events_user.c
> @@ -1100,8 +1100,10 @@ static int user_event_create(const char *raw_command)
>  
>  	group = current_user_event_group();
>  
> -	if (!group)
> +	if (!group) {
> +		kfree(name);
>  		return -ENOENT;
> +	}
>  
>  	mutex_lock(&group->reg_mutex);
>  
> -- 
> 2.17.1
>
  
Beau Belgrave Nov. 15, 2022, 5:07 p.m. UTC | #2
On Wed, Nov 16, 2022 at 12:07:17AM +0900, Masami Hiramatsu wrote:
> On Tue, 15 Nov 2022 09:44:45 +0800
> Xiu Jianfeng <xiujianfeng@huawei.com> wrote:
> 
> > Before current_user_event_group(), it has allocated memory and save it
> > in @name, this should freed before return error.
> > 

Nice catch!

Acked-by: Beau Belgrave <beaub@linux.microsoft.com>

Thanks,
-Beau

> > Fixes: e5d271812e7a ("tracing/user_events: Move pages/locks into groups to prepare for namespaces")
> > Signed-off-by: Xiu Jianfeng <xiujianfeng@huawei.com>
> 
> This looks good to me.
> 
> Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> 
> Thanks,
> 
> > ---
> >  kernel/trace/trace_events_user.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
> > index ae78c2d53c8a..539b08ae7020 100644
> > --- a/kernel/trace/trace_events_user.c
> > +++ b/kernel/trace/trace_events_user.c
> > @@ -1100,8 +1100,10 @@ static int user_event_create(const char *raw_command)
> >  
> >  	group = current_user_event_group();
> >  
> > -	if (!group)
> > +	if (!group) {
> > +		kfree(name);
> >  		return -ENOENT;
> > +	}
> >  
> >  	mutex_lock(&group->reg_mutex);
> >  
> > -- 
> > 2.17.1
> > 
> 
> 
> -- 
> Masami Hiramatsu (Google) <mhiramat@kernel.org>
  

Patch

diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
index ae78c2d53c8a..539b08ae7020 100644
--- a/kernel/trace/trace_events_user.c
+++ b/kernel/trace/trace_events_user.c
@@ -1100,8 +1100,10 @@  static int user_event_create(const char *raw_command)
 
 	group = current_user_event_group();
 
-	if (!group)
+	if (!group) {
+		kfree(name);
 		return -ENOENT;
+	}
 
 	mutex_lock(&group->reg_mutex);