From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 081A0C5DF65 for ; Wed, 6 Nov 2019 14:35:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C730B21929 for ; Wed, 6 Nov 2019 14:35:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="P1NvzCEw" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731972AbfKFOfy (ORCPT ); Wed, 6 Nov 2019 09:35:54 -0500 Received: from mail-qt1-f194.google.com ([209.85.160.194]:38713 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727321AbfKFOfy (ORCPT ); Wed, 6 Nov 2019 09:35:54 -0500 Received: by mail-qt1-f194.google.com with SMTP id p20so15642551qtq.5; Wed, 06 Nov 2019 06:35:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:date:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=gWaWc2qSkhh0jyxJemX9BkyQA39c3n/0zxtISnFYQhM=; b=P1NvzCEwkmM0+gg8uED5ejPWmfxAXqQzanJBmHeoMx5xmgcfrT6y/izV5ygA0uaaCX cA/mha1FGQ//zo/itj3nJNEtWtJOcFvC23CrARMXVzwCFu4+o4E4pSYfxgN6VaT6t0HD KEQXcA/g1d4Dop+B0U9fRjf7Q6Lyz25M5sesM8N+XDB6edzDlqE1IO6rzM6K6U4ZZR6c WWNWrkATt4PUt9H4FZ/SMG0Z55WCb6yqyptOUXRrQKPG5hyTJp9Ee21eEg6xiZHnPrWZ 9mNOUGiV8rghBSsCibYTZlGsWOFEN1Rk9NWzk4ibDuhNFMJxm3/PIg28pgX4th376Tkv X7rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:date:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=gWaWc2qSkhh0jyxJemX9BkyQA39c3n/0zxtISnFYQhM=; b=uGwMzAZw7JhYxEK4IE8srP+s14pzGjgUujSgu+VYbbxHuJevGRcI0QI1vU/zSang65 W23hbSsCQlscTYG6L3TQ1ijdH5aSLBo4uJEYmTxLUfm4gUbd7vRJLVDn8qcDdYKrTjox PTkFykOOYjN2PK74KtLgOojv2DMO/x69GeiHykZP5CPAaWeEi/JesSo0r6j6Nz/Swp2+ L1yix/kLixw9YBjLBPxZ419/D0/GzuX8IUrNNNilAFYVv/T+DiKxlfU0qpNFTS85ARjy oyfAHHqHIvrZ/d7YE4pp0T3c4/huRbETSezNSyGMtSvnuHZPr41s6oltqgr3k3VHVkb2 mD/Q== X-Gm-Message-State: APjAAAWYuMoy9ZAw279rtcfTWK3LVCFIfw7LtU4HKSUxDLVCMkIn2x39 viQ6bnY5U6HKwM6utEmGcFg= X-Google-Smtp-Source: APXvYqxwVyKRBIOEKpWvi7JRAYDjFBUsjPzsDN0466AAwomTOQI+vW4JEsykotp3uq/1ur2CpbTKyg== X-Received: by 2002:ac8:6ec4:: with SMTP id f4mr2683702qtv.271.1573050952921; Wed, 06 Nov 2019 06:35:52 -0800 (PST) Received: from quaco.ghostprotocols.net ([179.97.35.50]) by smtp.gmail.com with ESMTPSA id l14sm9990457qkj.61.2019.11.06.06.35.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Nov 2019 06:35:52 -0800 (PST) From: Arnaldo Carvalho de Melo X-Google-Original-From: Arnaldo Carvalho de Melo Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id C4E6B40B1D; Wed, 6 Nov 2019 11:35:49 -0300 (-03) Date: Wed, 6 Nov 2019 11:35:49 -0300 To: Jiri Olsa Cc: Ian Rogers , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Namhyung Kim , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , Andi Kleen , Jin Yao , Adrian Hunter , Kan Liang , John Garry , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, bpf@vger.kernel.org, clang-built-linux@googlegroups.com, Stephane Eranian Subject: Re: [PATCH v5 06/10] perf tools: add destructors for parse event terms Message-ID: <20191106143549.GD6259@kernel.org> References: <20191025180827.191916-1-irogers@google.com> <20191030223448.12930-1-irogers@google.com> <20191030223448.12930-7-irogers@google.com> <20191106142424.GG30214@krava> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20191106142424.GG30214@krava> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.12.1 (2019-06-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Wed, Nov 06, 2019 at 03:24:24PM +0100, Jiri Olsa escreveu: > On Wed, Oct 30, 2019 at 03:34:44PM -0700, Ian Rogers wrote: > > If parsing fails then destructors are ran to clean the up the stack. > > Rename the head union member to make the term and evlist use cases more > > distinct, this simplifies matching the correct destructor. > > > > Signed-off-by: Ian Rogers > > Acked-by: Jiri Olsa > > thanks, > jirka > > @@ -37,6 +38,25 @@ static struct list_head* alloc_list() > > return list; > > } > > > > +static void free_list_evsel(struct list_head* list_evsel) > > +{ > > + struct evsel *evsel, *tmp; > > + > > + list_for_each_entry_safe(evsel, tmp, list_evsel, core.node) { > > + list_del_init(&evsel->core.node); > > + perf_evsel__delete(evsel); > > + } > > + free(list_evsel); > > +} Applying, but later I think we should use something like: void __perf_evlist__purge(truct list_head *list) { with the above code } And: void perf_evlist__purge(struct perf_evlist *evlist) { __perf_evlist__purge(&evlist->entries); evlist->nr_entries = 0; } To replace the existing: static void perf_evlist__purge(struct perf_evlist *evlist) { struct perf_evsel *pos, *n; perf_evlist__for_each_entry_safe(evlist, n, pos) { list_del_init(&pos->node); perf_evsel__delete(pos); } evlist->nr_entries = 0; } Anyway, applied. - Arnaldo > > +static void free_term(struct parse_events_term *term) > > +{ > > + if (term->type_val == PARSE_EVENTS__TERM_TYPE_STR) > > + free(term->val.str); > > + zfree(&term->array.ranges); > > + free(term); > > +} > > + > > static void inc_group_count(struct list_head *list, > > struct parse_events_state *parse_state) > > { > > @@ -66,6 +86,7 @@ static void inc_group_count(struct list_head *list, > > %type PE_VALUE_SYM_TOOL > > %type PE_RAW > > %type PE_TERM > > +%type value_sym > > %type PE_NAME > > %type PE_BPF_OBJECT > > %type PE_BPF_SOURCE > > @@ -76,37 +97,43 @@ static void inc_group_count(struct list_head *list, > > %type PE_EVENT_NAME > > %type PE_PMU_EVENT_PRE PE_PMU_EVENT_SUF PE_KERNEL_PMU_EVENT > > %type PE_DRV_CFG_TERM > > -%type value_sym > > -%type event_config > > -%type opt_event_config > > -%type opt_pmu_config > > +%destructor { free ($$); } > > %type event_term > > -%type event_pmu > > -%type event_legacy_symbol > > -%type event_legacy_cache > > -%type event_legacy_mem > > -%type event_legacy_tracepoint > > +%destructor { free_term ($$); } > > +%type event_config > > +%type opt_event_config > > +%type opt_pmu_config > > +%destructor { parse_events_terms__delete ($$); } > > +%type event_pmu > > +%type event_legacy_symbol > > +%type event_legacy_cache > > +%type event_legacy_mem > > +%type event_legacy_tracepoint > > +%type event_legacy_numeric > > +%type event_legacy_raw > > +%type event_bpf_file > > +%type event_def > > +%type event_mod > > +%type event_name > > +%type event > > +%type events > > +%type group_def > > +%type group > > +%type groups > > +%destructor { free_list_evsel ($$); } > > %type tracepoint_name > > -%type event_legacy_numeric > > -%type event_legacy_raw > > -%type event_bpf_file > > -%type event_def > > -%type event_mod > > -%type event_name > > -%type event > > -%type events > > -%type group_def > > -%type group > > -%type groups > > +%destructor { free ($$.sys); free ($$.event); } > > %type array > > %type array_term > > %type array_terms > > +%destructor { free ($$.ranges); } > > > > %union > > { > > char *str; > > u64 num; > > - struct list_head *head; > > + struct list_head *list_evsel; > > + struct list_head *list_terms; > > struct parse_events_term *term; > > struct tracepoint_name { > > char *sys; > > -- > > 2.24.0.rc1.363.gb1bccd3e3d-goog > > -- - Arnaldo