lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 17/20] perf trace: free syscall tp fields in evsel->priv
    Date
    ASan reports several memory leaks running the perf test
    "88: Check open filename arg using perf trace + vfs_getname".
    The third of these leaks is related to evsel->priv fields of sycalls never
    being deallocated.

    This patch adds the function evlist__free_syscall_tp_fields which
    iterates over all evsels in evlist, matching syscalls, and calling the
    missing frees.
    This new function is called at the end of trace__run, right before
    calling evlist__delete.

    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    ---
    tools/perf/builtin-trace.c | 17 ++++++++++++++++-
    1 file changed, 16 insertions(+), 1 deletion(-)

    diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
    index d67f02d237eb0c7e..d9c65d55a9ae7526 100644
    --- a/tools/perf/builtin-trace.c
    +++ b/tools/perf/builtin-trace.c
    @@ -3103,6 +3103,21 @@ static struct evsel *evsel__new_pgfault(u64 config)
    return evsel;
    }

    +static void evlist__free_syscall_tp_fields(struct evlist *evlist)
    +{
    + struct evsel *evsel;
    +
    + evlist__for_each_entry(evlist, evsel) {
    + struct evsel_trace *et = evsel->priv;
    +
    + if (!et || !evsel->tp_format || strcmp(evsel->tp_format->system, "syscalls"))
    + continue;
    +
    + free(et->fmt);
    + free(et);
    + }
    +}
    +
    static void trace__handle_event(struct trace *trace, union perf_event *event, struct perf_sample *sample)
    {
    const u32 type = event->header.type;
    @@ -4138,7 +4153,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)

    out_delete_evlist:
    trace__symbols__exit(trace);
    -
    + evlist__free_syscall_tp_fields(evlist);
    evlist__delete(evlist);
    cgroup__put(trace->cgroup);
    trace->evlist = NULL;
    --
    2.31.1
    \
     
     \ /
      Last update: 2021-07-15 18:09    [W:4.304 / U:0.352 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site