On Fri, Jan 30, 2015 at 03:24:47PM +0100, Jiri Olsa wrote: > On Fri, Jan 30, 2015 at 09:17:19AM -0500, Steven Rostedt wrote: > > On Mon, 26 Jan 2015 18:38:23 +0800 > > Wang Nan <[email protected]> wrote: > > > > > > > diff --git a/tools/lib/traceevent/event-parse.c > > > b/tools/lib/traceevent/event-parse.c > > > index cf3a44b..5f76003 100644 > > > --- a/tools/lib/traceevent/event-parse.c > > > +++ b/tools/lib/traceevent/event-parse.c > > > @@ -5909,6 +5909,8 @@ static void free_format_fields(struct format_field > > > *field) > > > free(field->type); > > > free(field->name); > > > free(field); > > > + if (field->destroy_priv) > > > + field->destroy_priv(field); > > > > I think you want to call field->destroy_priv() *before* you free field. > > argh.. missed that :-\ will fix >
fixed version jirka --- From: Wang Nan <[email protected]> Introduce a priv field to 'struct format_field' for futher expansion. (In https://lkml.org/lkml/2015/1/21/383 , Jiri Olsa gives a suggestion about changing lib traceevent to solve a bug of perf-convert-to-ctf, which is related to duplicated field names. I think his suggestion should be something like this patch. ) Signed-off-by: Wang Nan <[email protected]> Cc: Arnaldo Carvalho de Melo <[email protected]> Cc: David Ahern <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Sebastian Andrzej Siewior <[email protected]> Cc: Tom Zanussi <[email protected]> [ moved field release after destroy callback call ] Signed-off-by: Jiri Olsa <[email protected]> --- tools/lib/traceevent/event-parse.c | 2 ++ tools/lib/traceevent/event-parse.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c index afe20ed9fac8..64d40b7e0582 100644 --- a/tools/lib/traceevent/event-parse.c +++ b/tools/lib/traceevent/event-parse.c @@ -6236,6 +6236,8 @@ static void free_format_fields(struct format_field *field) next = field->next; free(field->type); free(field->name); + if (field->destroy_priv) + field->destroy_priv(field); free(field); field = next; } diff --git a/tools/lib/traceevent/event-parse.h b/tools/lib/traceevent/event-parse.h index 7a3873ff9a4f..928d801444ab 100644 --- a/tools/lib/traceevent/event-parse.h +++ b/tools/lib/traceevent/event-parse.h @@ -190,6 +190,8 @@ struct format_field { unsigned int arraylen; unsigned int elementsize; unsigned long flags; + void *priv; + void (*destroy_priv)(struct format_field *); }; struct format { -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

