All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf annotate: Fix the segmentation fault bug of perf annotate
@ 2015-03-20 13:52 Yunlong Song
  2015-03-20 15:48 ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 2+ messages in thread
From: Yunlong Song @ 2015-03-20 13:52 UTC (permalink / raw)
  To: a.p.zijlstra, paulus, mingo, acme; +Cc: linux-kernel, wangnan0

There is a segmentation fault bug in 'perf annotate' using the perf.data
created by 'perf record -g', so fix it.

Example:

 $ perf record -g ls

Before this patch:

 $ perf annotate
 Segmentation fault

After this patch:

 $ perf annotate
  Percent |      Source code & Disassembly of kcore for cycles
 -------------------------------------------------------------
          :
          :
          :
          :      Disassembly of section load0:
          :
          :      ffffffff8103efc0 <load0>:
     0.00 :        ffffffff8103efc0:       mov    %esi,%eax
     0.00 :        ffffffff8103efc2:       mov    %edi,%ecx
     0.00 :        ffffffff8103efc4:       wrmsr
   100.00 :        ffffffff8103efc6:       xor    %eax,%eax
     0.00 :        ffffffff8103efc8:       retq
  Percent |      Source code & Disassembly of kcore for cycles
 -------------------------------------------------------------
 ...

Signed-off-by: Yunlong Song <yunlong.song@huawei.com>
---
 tools/perf/util/annotate.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 61bf912..0f9ebad 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -30,6 +30,9 @@ static int disasm_line__parse(char *line, char **namep, char **rawp);
 
 static void ins__delete(struct ins_operands *ops)
 {
+	if (ops == NULL)
+		return;
+
 	zfree(&ops->source.raw);
 	zfree(&ops->source.name);
 	zfree(&ops->target.raw);
@@ -211,7 +214,11 @@ static int lock__scnprintf(struct ins *ins, char *bf, size_t size,
 
 static void lock__delete(struct ins_operands *ops)
 {
-	struct ins *ins = ops->locked.ins;
+	struct ins *ins;
+
+	if (ops == NULL)
+		return;
+	ins = ops->locked.ins;
 
 	if (ins && ins->ops->free)
 		ins->ops->free(ops->locked.ops);
-- 
1.8.5.2


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

end of thread, other threads:[~2015-03-20 15:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-20 13:52 [PATCH] perf annotate: Fix the segmentation fault bug of perf annotate Yunlong Song
2015-03-20 15:48 ` Arnaldo Carvalho de Melo

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.