aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/util/evlist.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 3960560f873a..fb4727d3df85 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -710,7 +710,6 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
710{ 710{
711 unsigned int *mmap_pages = opt->value; 711 unsigned int *mmap_pages = opt->value;
712 unsigned long pages, val; 712 unsigned long pages, val;
713 size_t size;
714 static struct parse_tag tags[] = { 713 static struct parse_tag tags[] = {
715 { .tag = 'B', .mult = 1 }, 714 { .tag = 'B', .mult = 1 },
716 { .tag = 'K', .mult = 1 << 10 }, 715 { .tag = 'K', .mult = 1 << 10 },
@@ -726,11 +725,6 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
726 if (val != (unsigned long) -1) { 725 if (val != (unsigned long) -1) {
727 /* we got file size value */ 726 /* we got file size value */
728 pages = PERF_ALIGN(val, page_size) / page_size; 727 pages = PERF_ALIGN(val, page_size) / page_size;
729 if (pages < (1UL << 31) && !is_power_of_2(pages)) {
730 pages = next_pow2(pages);
731 pr_info("rounding mmap pages size to %lu (%lu pages)\n",
732 pages * page_size, pages);
733 }
734 } else { 728 } else {
735 /* we got pages count value */ 729 /* we got pages count value */
736 char *eptr; 730 char *eptr;
@@ -741,14 +735,14 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
741 } 735 }
742 } 736 }
743 737
744 if (pages > UINT_MAX || pages > SIZE_MAX / page_size) { 738 if (pages < (1UL << 31) && !is_power_of_2(pages)) {
745 pr_err("--mmap_pages/-m value too big\n"); 739 pages = next_pow2(pages);
746 return -1; 740 pr_info("rounding mmap pages size to %lu bytes (%lu pages)\n",
741 pages * page_size, pages);
747 } 742 }
748 743
749 size = perf_evlist__mmap_size(pages); 744 if (pages > UINT_MAX || pages > SIZE_MAX / page_size) {
750 if (!size) { 745 pr_err("--mmap_pages/-m value too big\n");
751 pr_err("--mmap_pages/-m value must be a power of two.");
752 return -1; 746 return -1;
753 } 747 }
754 748