Skip to content

Commit

Permalink
perf parse-event: Fix memory leak in evsel->unit
Browse files Browse the repository at this point in the history
The evsel->unit borrows a pointer of pmu event or alias instead of
owns a string.  But tool event (duration_time) passes a result of
strdup() caused a leak.

It was found by ASAN during metric test:

  Direct leak of 210 byte(s) in 70 object(s) allocated from:
    #0 0x7fe366fca0b5 in strdup (/lib/x86_64-linux-gnu/libasan.so.5+0x920b5)
    hardkernel#1 0x559fbbcc6ea3 in add_event_tool util/parse-events.c:414
    hardkernel#2 0x559fbbcc6ea3 in parse_events_add_tool util/parse-events.c:1414
    hardkernel#3 0x559fbbd8474d in parse_events_parse util/parse-events.y:439
    hardkernel#4 0x559fbbcc95da in parse_events__scanner util/parse-events.c:2096
    hardkernel#5 0x559fbbcc95da in __parse_events util/parse-events.c:2141
    hardkernel#6 0x559fbbc28555 in check_parse_id tests/pmu-events.c:406
    hardkernel#7 0x559fbbc28555 in check_parse_id tests/pmu-events.c:393
    hardkernel#8 0x559fbbc28555 in check_parse_cpu tests/pmu-events.c:415
    hardkernel#9 0x559fbbc28555 in test_parsing tests/pmu-events.c:498
    hardkernel#10 0x559fbbc0109b in run_test tests/builtin-test.c:410
    hardkernel#11 0x559fbbc0109b in test_and_print tests/builtin-test.c:440
    hardkernel#12 0x559fbbc03e69 in __cmd_test tests/builtin-test.c:695
    hardkernel#13 0x559fbbc03e69 in cmd_test tests/builtin-test.c:807
    hardkernel#14 0x559fbbc691f4 in run_builtin /home/namhyung/project/linux/tools/perf/perf.c:312
    hardkernel#15 0x559fbbb071a8 in handle_internal_command /home/namhyung/project/linux/tools/perf/perf.c:364
    hardkernel#16 0x559fbbb071a8 in run_argv /home/namhyung/project/linux/tools/perf/perf.c:408
    hardkernel#17 0x559fbbb071a8 in main /home/namhyung/project/linux/tools/perf/perf.c:538
    hardkernel#18 0x7fe366b68cc9 in __libc_start_main ../csu/libc-start.c:308

Fixes: f0fbb11 ("perf stat: Implement duration_time as a proper event")
Signed-off-by: Namhyung Kim <[email protected]>
Acked-by: Jiri Olsa <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Ian Rogers <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lore.kernel.org/lkml/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
  • Loading branch information
namhyung authored and acmel committed Sep 15, 2020
1 parent bfd1b83 commit b12eea5
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion tools/perf/util/parse-events.c
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ static int add_event_tool(struct list_head *list, int *idx,
return -ENOMEM;
evsel->tool_event = tool_event;
if (tool_event == PERF_TOOL_DURATION_TIME)
evsel->unit = strdup("ns");
evsel->unit = "ns";
return 0;
}

Expand Down

0 comments on commit b12eea5

Please sign in to comment.