aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/util/event.c1
-rw-r--r--tools/perf/util/evlist.c4
-rw-r--r--tools/perf/util/probe-event.c6
-rw-r--r--tools/perf/util/probe-finder.c12
4 files changed, 22 insertions, 1 deletions
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 2044324b755a..2a6f33cd888c 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -74,6 +74,7 @@ static pid_t perf_event__get_comm_tgid(pid_t pid, char *comm, size_t len)
74 if (size >= len) 74 if (size >= len)
75 size = len - 1; 75 size = len - 1;
76 memcpy(comm, name, size); 76 memcpy(comm, name, size);
77 comm[size] = '\0';
77 78
78 } else if (memcmp(bf, "Tgid:", 5) == 0) { 79 } else if (memcmp(bf, "Tgid:", 5) == 0) {
79 char *tgids = bf + 5; 80 char *tgids = bf + 5;
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 5c61dc57d7c7..f8da9fada002 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -349,6 +349,10 @@ struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id)
349 hlist_for_each_entry(sid, pos, head, node) 349 hlist_for_each_entry(sid, pos, head, node)
350 if (sid->id == id) 350 if (sid->id == id)
351 return sid->evsel; 351 return sid->evsel;
352
353 if (!perf_evlist__sample_id_all(evlist))
354 return list_entry(evlist->entries.next, struct perf_evsel, node);
355
352 return NULL; 356 return NULL;
353} 357}
354 358
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 8379252e75c4..8a8ee64e72d1 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -1866,6 +1866,12 @@ static int convert_to_probe_trace_events(struct perf_probe_event *pev,
1866 tev->point.symbol); 1866 tev->point.symbol);
1867 ret = -ENOENT; 1867 ret = -ENOENT;
1868 goto error; 1868 goto error;
1869 } else if (tev->point.offset > sym->end - sym->start) {
1870 pr_warning("Offset specified is greater than size of %s\n",
1871 tev->point.symbol);
1872 ret = -ENOENT;
1873 goto error;
1874
1869 } 1875 }
1870 1876
1871 return 1; 1877 return 1;
diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 67dc4aed721c..2cc162d3b78c 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -671,7 +671,7 @@ static int find_variable(Dwarf_Die *sc_die, struct probe_finder *pf)
671static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr, 671static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr,
672 bool retprobe, struct probe_trace_point *tp) 672 bool retprobe, struct probe_trace_point *tp)
673{ 673{
674 Dwarf_Addr eaddr; 674 Dwarf_Addr eaddr, highaddr;
675 const char *name; 675 const char *name;
676 676
677 /* Copy the name of probe point */ 677 /* Copy the name of probe point */
@@ -682,6 +682,16 @@ static int convert_to_trace_point(Dwarf_Die *sp_die, Dwarf_Addr paddr,
682 dwarf_diename(sp_die)); 682 dwarf_diename(sp_die));
683 return -ENOENT; 683 return -ENOENT;
684 } 684 }
685 if (dwarf_highpc(sp_die, &highaddr) != 0) {
686 pr_warning("Failed to get end address of %s\n",
687 dwarf_diename(sp_die));
688 return -ENOENT;
689 }
690 if (paddr > highaddr) {
691 pr_warning("Offset specified is greater than size of %s\n",
692 dwarf_diename(sp_die));
693 return -EINVAL;
694 }
685 tp->symbol = strdup(name); 695 tp->symbol = strdup(name);
686 if (tp->symbol == NULL) 696 if (tp->symbol == NULL)
687 return -ENOMEM; 697 return -ENOMEM;