All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf tools: Fix possible double free on error
@ 2015-03-04 10:01 He Kuang
  2015-03-04 12:46 ` Masami Hiramatsu
  2015-03-14  7:04 ` [tip:perf/core] perf probe: " tip-bot for He Kuang
  0 siblings, 2 replies; 4+ messages in thread
From: He Kuang @ 2015-03-04 10:01 UTC (permalink / raw)
  To: masami.hiramatsu.pt; +Cc: acme, mingo, a.p.zijlstra, wangnan0, linux-kernel

A double free occurred when get source file path failed. If lr->path
failed to assign a new value, it will be freed as the old path and then
be freed again during line_range__clear(), and causes this:

  $ perf probe -L do_execve -k vmlinux
  *** Error in `/usr/bin/perf': double free or corruption (fasttop):
      0x0000000000a9ac50 ***
  ======= Backtrace: =========
  ../lib64/libc.so.6(+0x6eeef)[0x7ffff5e44eef]
  ../lib64/libc.so.6(+0x78cae)[0x7ffff5e4ecae]
  ../lib64/libc.so.6(+0x79987)[0x7ffff5e4f987]
  ../bin/perf[0x4ab41f]
  ...

This patch fix this problem.

Signed-off-by: He Kuang <hekuang@huawei.com>
---
 tools/perf/util/probe-event.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 919937e..7df30bd 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -650,7 +650,11 @@ static int __show_line_range(struct line_range *lr, const char *module)
 	/* Convert source file path */
 	tmp = lr->path;
 	ret = get_real_path(tmp, lr->comp_dir, &lr->path);
-	free(tmp);	/* Free old path */
+
+	/* Free old path when new path is assigned */
+	if (tmp != lr->path)
+		free(tmp);
+
 	if (ret < 0) {
 		pr_warning("Failed to find source file path.\n");
 		return ret;
-- 
2.2.0.33.gc18b867


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-03-14  7:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-04 10:01 [PATCH] perf tools: Fix possible double free on error He Kuang
2015-03-04 12:46 ` Masami Hiramatsu
2015-03-10  3:35   ` He Kuang
2015-03-14  7:04 ` [tip:perf/core] perf probe: " tip-bot for He Kuang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.