All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tools lib traceevent: Fix memory leak in process_dynamic_array_len
@ 2020-07-30 15:02 Philippe Duplessis-Guindon
  2020-07-30 21:28 ` Steven Rostedt
  0 siblings, 1 reply; 3+ messages in thread
From: Philippe Duplessis-Guindon @ 2020-07-30 15:02 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: linux-trace-devel, Philippe Duplessis-Guindon

I compiled with AddressSanitizer and I had these memory leaks while I
was using the tep_parse_format function:

    Direct leak of 28 byte(s) in 4 object(s) allocated from:
        #0 0x7fb07db49ffe in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
        #1 0x7fb07a724228 in extend_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:985
        #2 0x7fb07a724c21 in __read_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1140
        #3 0x7fb07a724f78 in read_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1206
        #4 0x7fb07a725191 in __read_expect_type /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1291
        #5 0x7fb07a7251df in read_expect_type /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1299
        #6 0x7fb07a72e6c8 in process_dynamic_array_len /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:2849
        #7 0x7fb07a7304b8 in process_function /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3161
        #8 0x7fb07a730900 in process_arg_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3207
        #9 0x7fb07a727c0b in process_arg /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1786
        #10 0x7fb07a731080 in event_read_print_args /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3285
        #11 0x7fb07a731722 in event_read_print /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3369
        #12 0x7fb07a740054 in __tep_parse_format /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6335
        #13 0x7fb07a74047a in __parse_event /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6389
        #14 0x7fb07a740536 in tep_parse_format /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6431
        #15 0x7fb07a785acf in parse_event ../../../src/fs-src/fs.c:251
        #16 0x7fb07a785ccd in parse_systems ../../../src/fs-src/fs.c:284
        #17 0x7fb07a786fb3 in read_metadata ../../../src/fs-src/fs.c:593
        #18 0x7fb07a78760e in ftrace_fs_source_init ../../../src/fs-src/fs.c:727
        #19 0x7fb07d90c19c in add_component_with_init_method_data ../../../../src/lib/graph/graph.c:1048
        #20 0x7fb07d90c87b in add_source_component_with_initialize_method_data ../../../../src/lib/graph/graph.c:1127
        #21 0x7fb07d90c92a in bt_graph_add_source_component ../../../../src/lib/graph/graph.c:1152
        #22 0x55db11aa632e in cmd_run_ctx_create_components_from_config_components ../../../src/cli/babeltrace2.c:2252
        #23 0x55db11aa6fda in cmd_run_ctx_create_components ../../../src/cli/babeltrace2.c:2347
        #24 0x55db11aa780c in cmd_run ../../../src/cli/babeltrace2.c:2461
        #25 0x55db11aa8a7d in main ../../../src/cli/babeltrace2.c:2673
        #26 0x7fb07d5460b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

The token variable in the process_dynamic_array_len function is
allocated in the read_expect_type function, but is not freed before
calling the read_token function.

Free the token variable before calling read_token in order to plug the
leak.

Signed-off-by: Philippe Duplessis-Guindon <pduplessis@efficios.com>
---
 tools/lib/traceevent/event-parse.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
index 5b36c589a029..ba4f33804af1 100644
--- a/tools/lib/traceevent/event-parse.c
+++ b/tools/lib/traceevent/event-parse.c
@@ -2861,6 +2861,7 @@ process_dynamic_array_len(struct tep_event *event, struct tep_print_arg *arg,
 	if (read_expected(TEP_EVENT_DELIM, ")") < 0)
 		goto out_err;
 
+	free_token(token);
 	type = read_token(&token);
 	*tok = token;
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] tools lib traceevent: Fix memory leak in process_dynamic_array_len
  2020-07-30 15:02 [PATCH] tools lib traceevent: Fix memory leak in process_dynamic_array_len Philippe Duplessis-Guindon
@ 2020-07-30 21:28 ` Steven Rostedt
  2020-07-31 12:04   ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 3+ messages in thread
From: Steven Rostedt @ 2020-07-30 21:28 UTC (permalink / raw)
  To: Philippe Duplessis-Guindon
  Cc: linux-trace-devel, LKML, Arnaldo Carvalho de Melo


Arnaldo,

Can you pull this into your tree under urgent?

 https://lore.kernel.org/linux-trace-devel/20200730150236.5392-1-pduplessis@efficios.com/

Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

-- Steve


On Thu, 30 Jul 2020 11:02:36 -0400
Philippe Duplessis-Guindon <pduplessis@efficios.com> wrote:

> I compiled with AddressSanitizer and I had these memory leaks while I
> was using the tep_parse_format function:
> 
>     Direct leak of 28 byte(s) in 4 object(s) allocated from:
>         #0 0x7fb07db49ffe in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
>         #1 0x7fb07a724228 in extend_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:985
>         #2 0x7fb07a724c21 in __read_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1140
>         #3 0x7fb07a724f78 in read_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1206
>         #4 0x7fb07a725191 in __read_expect_type /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1291
>         #5 0x7fb07a7251df in read_expect_type /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1299
>         #6 0x7fb07a72e6c8 in process_dynamic_array_len /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:2849
>         #7 0x7fb07a7304b8 in process_function /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3161
>         #8 0x7fb07a730900 in process_arg_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3207
>         #9 0x7fb07a727c0b in process_arg /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1786
>         #10 0x7fb07a731080 in event_read_print_args /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3285
>         #11 0x7fb07a731722 in event_read_print /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3369
>         #12 0x7fb07a740054 in __tep_parse_format /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6335
>         #13 0x7fb07a74047a in __parse_event /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6389
>         #14 0x7fb07a740536 in tep_parse_format /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6431
>         #15 0x7fb07a785acf in parse_event ../../../src/fs-src/fs.c:251
>         #16 0x7fb07a785ccd in parse_systems ../../../src/fs-src/fs.c:284
>         #17 0x7fb07a786fb3 in read_metadata ../../../src/fs-src/fs.c:593
>         #18 0x7fb07a78760e in ftrace_fs_source_init ../../../src/fs-src/fs.c:727
>         #19 0x7fb07d90c19c in add_component_with_init_method_data ../../../../src/lib/graph/graph.c:1048
>         #20 0x7fb07d90c87b in add_source_component_with_initialize_method_data ../../../../src/lib/graph/graph.c:1127
>         #21 0x7fb07d90c92a in bt_graph_add_source_component ../../../../src/lib/graph/graph.c:1152
>         #22 0x55db11aa632e in cmd_run_ctx_create_components_from_config_components ../../../src/cli/babeltrace2.c:2252
>         #23 0x55db11aa6fda in cmd_run_ctx_create_components ../../../src/cli/babeltrace2.c:2347
>         #24 0x55db11aa780c in cmd_run ../../../src/cli/babeltrace2.c:2461
>         #25 0x55db11aa8a7d in main ../../../src/cli/babeltrace2.c:2673
>         #26 0x7fb07d5460b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
> 
> The token variable in the process_dynamic_array_len function is
> allocated in the read_expect_type function, but is not freed before
> calling the read_token function.
> 
> Free the token variable before calling read_token in order to plug the
> leak.
> 
> Signed-off-by: Philippe Duplessis-Guindon <pduplessis@efficios.com>
> ---
>  tools/lib/traceevent/event-parse.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
> index 5b36c589a029..ba4f33804af1 100644
> --- a/tools/lib/traceevent/event-parse.c
> +++ b/tools/lib/traceevent/event-parse.c
> @@ -2861,6 +2861,7 @@ process_dynamic_array_len(struct tep_event *event, struct tep_print_arg *arg,
>  	if (read_expected(TEP_EVENT_DELIM, ")") < 0)
>  		goto out_err;
>  
> +	free_token(token);
>  	type = read_token(&token);
>  	*tok = token;
>  


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] tools lib traceevent: Fix memory leak in process_dynamic_array_len
  2020-07-30 21:28 ` Steven Rostedt
@ 2020-07-31 12:04   ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-07-31 12:04 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: Philippe Duplessis-Guindon, linux-trace-devel, LKML

Em Thu, Jul 30, 2020 at 05:28:43PM -0400, Steven Rostedt escreveu:
> 
> Arnaldo,
> 
> Can you pull this into your tree under urgent?
> 
>  https://lore.kernel.org/linux-trace-devel/20200730150236.5392-1-pduplessis@efficios.com/
> 
> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>

Sure, will get it and try and send today,

- Arnaldo
 
> -- Steve
> 
> 
> On Thu, 30 Jul 2020 11:02:36 -0400
> Philippe Duplessis-Guindon <pduplessis@efficios.com> wrote:
> 
> > I compiled with AddressSanitizer and I had these memory leaks while I
> > was using the tep_parse_format function:
> > 
> >     Direct leak of 28 byte(s) in 4 object(s) allocated from:
> >         #0 0x7fb07db49ffe in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
> >         #1 0x7fb07a724228 in extend_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:985
> >         #2 0x7fb07a724c21 in __read_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1140
> >         #3 0x7fb07a724f78 in read_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1206
> >         #4 0x7fb07a725191 in __read_expect_type /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1291
> >         #5 0x7fb07a7251df in read_expect_type /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1299
> >         #6 0x7fb07a72e6c8 in process_dynamic_array_len /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:2849
> >         #7 0x7fb07a7304b8 in process_function /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3161
> >         #8 0x7fb07a730900 in process_arg_token /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3207
> >         #9 0x7fb07a727c0b in process_arg /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:1786
> >         #10 0x7fb07a731080 in event_read_print_args /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3285
> >         #11 0x7fb07a731722 in event_read_print /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:3369
> >         #12 0x7fb07a740054 in __tep_parse_format /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6335
> >         #13 0x7fb07a74047a in __parse_event /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6389
> >         #14 0x7fb07a740536 in tep_parse_format /home/pduplessis/repo/linux/tools/lib/traceevent/event-parse.c:6431
> >         #15 0x7fb07a785acf in parse_event ../../../src/fs-src/fs.c:251
> >         #16 0x7fb07a785ccd in parse_systems ../../../src/fs-src/fs.c:284
> >         #17 0x7fb07a786fb3 in read_metadata ../../../src/fs-src/fs.c:593
> >         #18 0x7fb07a78760e in ftrace_fs_source_init ../../../src/fs-src/fs.c:727
> >         #19 0x7fb07d90c19c in add_component_with_init_method_data ../../../../src/lib/graph/graph.c:1048
> >         #20 0x7fb07d90c87b in add_source_component_with_initialize_method_data ../../../../src/lib/graph/graph.c:1127
> >         #21 0x7fb07d90c92a in bt_graph_add_source_component ../../../../src/lib/graph/graph.c:1152
> >         #22 0x55db11aa632e in cmd_run_ctx_create_components_from_config_components ../../../src/cli/babeltrace2.c:2252
> >         #23 0x55db11aa6fda in cmd_run_ctx_create_components ../../../src/cli/babeltrace2.c:2347
> >         #24 0x55db11aa780c in cmd_run ../../../src/cli/babeltrace2.c:2461
> >         #25 0x55db11aa8a7d in main ../../../src/cli/babeltrace2.c:2673
> >         #26 0x7fb07d5460b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
> > 
> > The token variable in the process_dynamic_array_len function is
> > allocated in the read_expect_type function, but is not freed before
> > calling the read_token function.
> > 
> > Free the token variable before calling read_token in order to plug the
> > leak.
> > 
> > Signed-off-by: Philippe Duplessis-Guindon <pduplessis@efficios.com>
> > ---
> >  tools/lib/traceevent/event-parse.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
> > index 5b36c589a029..ba4f33804af1 100644
> > --- a/tools/lib/traceevent/event-parse.c
> > +++ b/tools/lib/traceevent/event-parse.c
> > @@ -2861,6 +2861,7 @@ process_dynamic_array_len(struct tep_event *event, struct tep_print_arg *arg,
> >  	if (read_expected(TEP_EVENT_DELIM, ")") < 0)
> >  		goto out_err;
> >  
> > +	free_token(token);
> >  	type = read_token(&token);
> >  	*tok = token;
> >  


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-07-31 12:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-30 15:02 [PATCH] tools lib traceevent: Fix memory leak in process_dynamic_array_len Philippe Duplessis-Guindon
2020-07-30 21:28 ` Steven Rostedt
2020-07-31 12:04   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.