mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: tip-bot for Namhyung Kim <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: tglx@linutronix.de, jolsa@redhat.com, dsahern@gmail.com,
	mingo@kernel.org, namhyung@kernel.org, acme@redhat.com,
	hpa@zytor.com, masami.hiramatsu.pt@hitachi.com,
	a.p.zijlstra@chello.nl, linux-kernel@vger.kernel.org
Subject: [tip:perf/urgent] perf tools: Fix segfault for symbol annotation on TUI
Date: Sat, 17 Jan 2015 02:13:08 -0800	[thread overview]
Message-ID: <tip-813ccd15452ed34e97aa526ffc70d6d8e6c466c5@git.kernel.org> (raw)
In-Reply-To: <1421234288-22758-1-git-send-email-namhyung@kernel.org>

Commit-ID:  813ccd15452ed34e97aa526ffc70d6d8e6c466c5
Gitweb:     http://git.kernel.org/tip/813ccd15452ed34e97aa526ffc70d6d8e6c466c5
Author:     Namhyung Kim <namhyung@kernel.org>
AuthorDate: Wed, 14 Jan 2015 20:18:05 +0900
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 16 Jan 2015 17:49:29 -0300

perf tools: Fix segfault for symbol annotation on TUI

Currently the symbol structure is allocated with symbol_conf.priv_size
to carry sideband information like annotation, map browser on TUI and
sort-by-name tree node.  So retrieving these information from symbol
needs to care about the details of such placement.

However the annotation code just assumes that the symbol is placed after
the struct annotation.  But actually there's other info between them.
So accessing those struct will lead to an undefined behavior (usually a
crash) after they write their info to the same location.

To reproduce the problem, please follow the steps below:

  1. run perf report (TUI of course) with -v option
  2. open map browser (by pressing right arrow key for any entry)
  3. search any function (by pressing '/' key and input whatever..)
  4. return to the hist browser (by pressing 'q' or left arrow key)
  5. open annotation window for the same entry (by pressing 'a' key)

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1421234288-22758-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/annotate.h | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index 0784a94..cadbdc9 100644
--- a/tools/perf/util/annotate.h
+++ b/tools/perf/util/annotate.h
@@ -116,11 +116,6 @@ struct annotation {
 	struct annotated_source *src;
 };
 
-struct sannotation {
-	struct annotation annotation;
-	struct symbol	  symbol;
-};
-
 static inline struct sym_hist *annotation__histogram(struct annotation *notes, int idx)
 {
 	return (((void *)&notes->src->histograms) +
@@ -129,8 +124,7 @@ static inline struct sym_hist *annotation__histogram(struct annotation *notes, i
 
 static inline struct annotation *symbol__annotation(struct symbol *sym)
 {
-	struct sannotation *a = container_of(sym, struct sannotation, symbol);
-	return &a->annotation;
+	return (void *)sym - symbol_conf.priv_size;
 }
 
 int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, int evidx);

      parent reply	other threads:[~2015-01-17 10:13 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-14 11:18 [PATCH v2 1/4] " Namhyung Kim
2015-01-14 11:18 ` [PATCH v2 2/4] perf tools: Add link argument to dso__find_symbol_by_name() Namhyung Kim
2015-01-14 16:36   ` David Ahern
2015-01-15  0:23     ` Namhyung Kim
2015-01-15  0:42       ` David Ahern
2015-01-28 15:01   ` [tip:perf/core] perf symbols: Return the first entry with a given name in find_by_name method tip-bot for Namhyung Kim
2015-01-14 11:18 ` [PATCH v2 3/4] perf probe: Do not rely on map__load() filter to find symbols Namhyung Kim
2015-01-14 13:54   ` Arnaldo Carvalho de Melo
2015-01-15 12:09     ` Masami Hiramatsu
2015-01-28 15:02   ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-14 11:18 ` [PATCH v2 4/4] perf probe: Fix probing kretprobes Namhyung Kim
2015-01-14 16:26   ` Jiri Olsa
2015-01-15 12:11   ` Masami Hiramatsu
2015-01-28 15:02   ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-14 12:57 ` [PATCH v2 1/4] perf tools: Fix segfault for symbol annotation on TUI Arnaldo Carvalho de Melo
2015-01-14 14:57 ` David Ahern
2015-01-14 21:08   ` Arnaldo Carvalho de Melo
2015-01-15  0:20     ` Namhyung Kim
2015-01-17 12:38       ` Arnaldo Carvalho de Melo
2015-01-17 10:13 ` tip-bot for Namhyung Kim [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-813ccd15452ed34e97aa526ffc70d6d8e6c466c5@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=dsahern@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome