Browse files

tools lib traceevent: Fix freeing arg on process_dynamic_array()

The @arg paremeter should not be freed inside of process_XXX(),
because it'd be freed from the caller of process_arg(). We can
free it only after it was reused for local usage.

Cc: Borislav Petkov <>
Cc: David Ahern <>
Cc: Frederic Weisbecker <>
Cc: Ingo Molnar <>
Cc: Namhyung Kim <>
Cc: Paul Mackerras <>
Cc: Peter Zijlstra <>
Signed-off-by: Namhyung Kim <>
Signed-off-by: Steven Rostedt <>
Signed-off-by: Arnaldo Carvalho de Melo <>
  • Loading branch information...
Namhyung Kim Arnaldo Carvalho de Melo
Namhyung Kim authored and Arnaldo Carvalho de Melo committed May 23, 2012
1 parent d1de108 commit b3511d0530c7a2b4fa64d1f5218c5f073ae7b543
Showing with 4 additions and 3 deletions.
  1. +4 −3 tools/lib/traceevent/event-parse.c
@@ -2300,17 +2300,18 @@ process_dynamic_array(struct event_format *event, struct print_arg *arg, char **
arg = alloc_arg();
type = process_arg(event, arg, &token);
if (type == EVENT_ERROR)
- goto out_free;
+ goto out_free_arg;
if (!test_type_token(type, token, EVENT_OP, "]"))
- goto out_free;
+ goto out_free_arg;
type = read_token_item(tok);
return type;
+ out_free_arg:
+ free_arg(arg);
- free(arg);
*tok = NULL;

0 comments on commit b3511d0

Please sign in to comment.