From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762944AbbA3OrD (ORCPT ); Fri, 30 Jan 2015 09:47:03 -0500 Received: from mx1.redhat.com ([209.132.183.28]:43465 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758641AbbA3Oq7 (ORCPT ); Fri, 30 Jan 2015 09:46:59 -0500 Date: Fri, 30 Jan 2015 15:46:32 +0100 From: Jiri Olsa To: Steven Rostedt Cc: Wang Nan , jeremie.galarneau@efficios.com, alexmonthy@voxpopuli.im, bigeasy@linutronix.de, lizefan@huawei.com, linux-kernel@vger.kernel.org Subject: [PATCHv3] tools lib traceevent: Add priv field to struct format_field Message-ID: <20150130144632.GA19703@krava.brq.redhat.com> References: <1422268705-32084-1-git-send-email-wangnan0@huawei.com> <1422268705-32084-2-git-send-email-wangnan0@huawei.com> <20150130091719.6464f945@gandalf.local.home> <20150130142447.GA19178@krava.brq.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150130142447.GA19178@krava.brq.redhat.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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 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 Cc: Arnaldo Carvalho de Melo Cc: David Ahern Cc: Frederic Weisbecker Cc: Jiri Olsa Cc: Namhyung Kim Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Sebastian Andrzej Siewior Cc: Tom Zanussi [ moved field release after destroy callback call ] Signed-off-by: Jiri Olsa --- 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