• S
    perf tools: Remove the node from rblist in strlist__remove · 45922814
    Suzuki K. Poulose 提交于
    The following commit:
    
    author	David Ahern <dsahern@gmail.com>
    	Tue, 31 Jul 2012 04:31:33 +0000 (22:31 -0600)
    committer	Arnaldo Carvalho de Melo <acme@redhat.com>
    	Fri, 3 Aug 2012 13:39:51 +0000 (10:39 -0300)
    commit	ee8dd3ca
    
    causes a double free during a probe deletion as the node is never
    removed from the list via strlist__remove(), even though it gets
    'deleted' (read free()'d). This causes a double free when we do
    strlist__delete() as the node is already deleted but present in the
    rblist.
    
    [suzukikp@suzukikp perf]$ sudo ./perf probe -a do_fork
    Added new event:
      probe:do_fork        (on do_fork)
    
    You can now use it in all perf tools, such as:
    
    	perf record -e probe:do_fork -aR sleep 1
    
    [suzukikp@suzukikp perf]$ sudo ./perf probe -d do_fork
    Removed event: probe:do_fork
    *** glibc detected *** ./perf: double free or corruption (fasttop): 0x000000000133d600 ***
    ======= Backtrace: =========
    /lib64/libc.so.6[0x38eec7dda6]
    ./perf(rblist__delete+0x5c)[0x47d3dc]
    ./perf(del_perf_probe_events+0xb6)[0x47b826]
    ./perf(cmd_probe+0x471)[0x42c8d1]
    ./perf[0x4150b3]
    ./perf(main+0x501)[0x4148e1]
    /lib64/libc.so.6(__libc_start_main+0xed)[0x38eec2169d]
    ./perf[0x414a61]
    
    Make sure we remove the node from the rblist before we delete the node.
    The rblist__remove_node() will invoke rblist->node_delete, which  will
    take care of deleting the node with the suitable function provided by
    the user.
    Reported-by: NAnanth N. Mavinakayanahalli <ananth@in.ibm.com>
    Signed-off-by: NSuzuki K. Poulose <suzuki@in.ibm.com>
    Acked-by: NDavid Ahern <dsahern@gmail.com>
    Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20120829055840.7802.1459.stgit@suzukikp.in.ibm.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
    45922814
strlist.c 3.5 KB