lkml.org 
[lkml]   [2019]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 100/144] perf probe: Avoid calling freeing routine multiple times for same pointer
    Date
    [ Upstream commit d95daf5accf4a72005daa13fbb1d1bd8709f2861 ]

    When perf_add_probe_events() we call cleanup_perf_probe_events() for the
    pev pointer it receives, then, as part of handling this failure the main
    'perf probe' goes on and calls cleanup_params() and that will again call
    cleanup_perf_probe_events()for the same pointer, so just set nevents to
    zero when handling the failure of perf_add_probe_events() to avoid the
    double free.

    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lkml.kernel.org/n/tip-x8qgma4g813z96dvtw9w219q@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/perf/builtin-probe.c | 10 ++++++++++
    1 file changed, 10 insertions(+)

    diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
    index 8bb124e55c6d2..2c376f5b21200 100644
    --- a/tools/perf/builtin-probe.c
    +++ b/tools/perf/builtin-probe.c
    @@ -698,6 +698,16 @@ __cmd_probe(int argc, const char **argv)

    ret = perf_add_probe_events(params.events, params.nevents);
    if (ret < 0) {
    +
    + /*
    + * When perf_add_probe_events() fails it calls
    + * cleanup_perf_probe_events(pevs, npevs), i.e.
    + * cleanup_perf_probe_events(params.events, params.nevents), which
    + * will call clear_perf_probe_event(), so set nevents to zero
    + * to avoid cleanup_params() to call clear_perf_probe_event() again
    + * on the same pevs.
    + */
    + params.nevents = 0;
    pr_err_with_code(" Error: Failed to add events.", ret);
    return ret;
    }
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-08-14 19:26    [W:4.335 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site