diff options
author | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2012-03-06 09:09:16 +0100 |
---|---|---|
committer | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2012-03-06 09:09:16 +0100 |
commit | d282e4d9353b9e7971713aa9e78da716e4a1262d (patch) | |
tree | 123aa2391841f37f4b8ae80c02eda4094e17994a /tools/perf/util/probe-finder.c | |
parent | Merge pull request #1 from bernieplug/fbdev-next (diff) | |
parent | Linux 3.3-rc6 (diff) | |
download | linux-d282e4d9353b9e7971713aa9e78da716e4a1262d.tar.xz linux-d282e4d9353b9e7971713aa9e78da716e4a1262d.zip |
Merge commit 'v3.3-rc6' into fbdev-next
Diffstat (limited to 'tools/perf/util/probe-finder.c')
-rw-r--r-- | tools/perf/util/probe-finder.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c index 5d732621a462..74bd2e63c4b4 100644 --- a/tools/perf/util/probe-finder.c +++ b/tools/perf/util/probe-finder.c @@ -672,7 +672,7 @@ static int find_variable(Dwarf_Die *sc_die, struct probe_finder *pf) static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, bool retprobe, struct probe_trace_point *tp) { - Dwarf_Addr eaddr; + Dwarf_Addr eaddr, highaddr; const char *name; /* Copy the name of probe point */ @@ -683,6 +683,16 @@ static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, dwarf_diename(sp_die)); return -ENOENT; } + if (dwarf_highpc(sp_die, &highaddr) != 0) { + pr_warning("Failed to get end address of %s\n", + dwarf_diename(sp_die)); + return -ENOENT; + } + if (paddr > highaddr) { + pr_warning("Offset specified is greater than size of %s\n", + dwarf_diename(sp_die)); + return -EINVAL; + } tp->symbol = strdup(name); if (tp->symbol == NULL) return -ENOMEM; |