aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/annotate.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-07-31 18:34:13 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-07-31 18:34:13 -0400
commitbca1a5c0eabe0f17081760c61e8d08e73dd6b6a6 (patch)
treef939c6f42bf459786eb0050578044fdde56fec90 /tools/perf/util/annotate.c
parentec7a19bfec544aa73e347369232f9bd654954aa3 (diff)
parent194f8dcbe9629d8e9346cf96345a9c0bbf0e67ae (diff)
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf updates from Ingo Molnar: "The biggest changes are Intel Nehalem-EX PMU uncore support, uprobes updates/cleanups/fixes from Oleg and diverse tooling updates (mostly fixes) now that Arnaldo is back from vacation." * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (40 commits) uprobes: __replace_page() needs munlock_vma_page() uprobes: Rename vma_address() and make it return "unsigned long" uprobes: Fix register_for_each_vma()->vma_address() check uprobes: Introduce vaddr_to_offset(vma, vaddr) uprobes: Teach build_probe_list() to consider the range uprobes: Remove insert_vm_struct()->uprobe_mmap() uprobes: Remove copy_vma()->uprobe_mmap() uprobes: Fix overflow in vma_address()/find_active_uprobe() uprobes: Suppress uprobe_munmap() from mmput() uprobes: Uprobe_mmap/munmap needs list_for_each_entry_safe() uprobes: Clean up and document write_opcode()->lock_page(old_page) uprobes: Kill write_opcode()->lock_page(new_page) uprobes: __replace_page() should not use page_address_in_vma() uprobes: Don't recheck vma/f_mapping in write_opcode() perf/x86: Fix missing struct before structure name perf/x86: Fix format definition of SNB-EP uncore QPI box perf/x86: Make bitfield unsigned perf/x86: Fix LLC-* and node-* events on Intel SandyBridge perf/x86: Add Intel Nehalem-EX uncore support perf/x86: Fix typo in format definition of uncore PCU filter ...
Diffstat (limited to 'tools/perf/util/annotate.c')
-rw-r--r--tools/perf/util/annotate.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 8069dfb5ba77..3a282c0057d2 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -426,7 +426,18 @@ int symbol__alloc_hist(struct symbol *sym)
426{ 426{
427 struct annotation *notes = symbol__annotation(sym); 427 struct annotation *notes = symbol__annotation(sym);
428 const size_t size = symbol__size(sym); 428 const size_t size = symbol__size(sym);
429 size_t sizeof_sym_hist = (sizeof(struct sym_hist) + size * sizeof(u64)); 429 size_t sizeof_sym_hist;
430
431 /* Check for overflow when calculating sizeof_sym_hist */
432 if (size > (SIZE_MAX - sizeof(struct sym_hist)) / sizeof(u64))
433 return -1;
434
435 sizeof_sym_hist = (sizeof(struct sym_hist) + size * sizeof(u64));
436
437 /* Check for overflow in zalloc argument */
438 if (sizeof_sym_hist > (SIZE_MAX - sizeof(*notes->src))
439 / symbol_conf.nr_events)
440 return -1;
430 441
431 notes->src = zalloc(sizeof(*notes->src) + symbol_conf.nr_events * sizeof_sym_hist); 442 notes->src = zalloc(sizeof(*notes->src) + symbol_conf.nr_events * sizeof_sym_hist);
432 if (notes->src == NULL) 443 if (notes->src == NULL)
@@ -777,7 +788,7 @@ fallback:
777 free_filename = false; 788 free_filename = false;
778 } 789 }
779 790
780 if (dso->symtab_type == SYMTAB__KALLSYMS) { 791 if (dso->symtab_type == DSO_BINARY_TYPE__KALLSYMS) {
781 char bf[BUILD_ID_SIZE * 2 + 16] = " with build id "; 792 char bf[BUILD_ID_SIZE * 2 + 16] = " with build id ";
782 char *build_id_msg = NULL; 793 char *build_id_msg = NULL;
783 794