All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Adrian Hunter <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: acme@redhat.com, linux-kernel@vger.kernel.org,
	eranian@google.com, paulus@samba.org, mingo@redhat.com,
	hpa@zytor.com, mingo@kernel.org, a.p.zijlstra@chello.nl,
	efault@gmx.de, namhyung@gmail.com, jolsa@redhat.com,
	fweisbec@gmail.com, adrian.hunter@intel.com, dsahern@gmail.com,
	tglx@linutronix.de
Subject: [tip:perf/core] perf evlist: Validate that mmap_pages is not too big
Date: Fri, 25 Oct 2013 03:32:50 -0700	[thread overview]
Message-ID: <tip-2fbe4abe944868aafdde233557ac85379b60ce46@git.kernel.org> (raw)
In-Reply-To: <1382427258-17495-15-git-send-email-adrian.hunter@intel.com>

Commit-ID:  2fbe4abe944868aafdde233557ac85379b60ce46
Gitweb:     http://git.kernel.org/tip/2fbe4abe944868aafdde233557ac85379b60ce46
Author:     Adrian Hunter <adrian.hunter@intel.com>
AuthorDate: Tue, 22 Oct 2013 10:34:18 +0300
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 23 Oct 2013 11:06:03 -0300

perf evlist: Validate that mmap_pages is not too big

Amend perf_evlist__parse_mmap_pages() to check that the mmap_pages
entered via the --mmap_pages/-m option is not too big.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1382427258-17495-15-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/evlist.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 85c4c80..2ce92ec 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -698,7 +698,8 @@ static size_t perf_evlist__mmap_size(unsigned long pages)
 int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
 				  int unset __maybe_unused)
 {
-	unsigned int pages, val, *mmap_pages = opt->value;
+	unsigned int *mmap_pages = opt->value;
+	unsigned long pages, val;
 	size_t size;
 	static struct parse_tag tags[] = {
 		{ .tag  = 'B', .mult = 1       },
@@ -709,12 +710,12 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
 	};
 
 	val = parse_tag_value(str, tags);
-	if (val != (unsigned int) -1) {
+	if (val != (unsigned long) -1) {
 		/* we got file size value */
 		pages = PERF_ALIGN(val, page_size) / page_size;
-		if (!is_power_of_2(pages)) {
+		if (pages < (1UL << 31) && !is_power_of_2(pages)) {
 			pages = next_pow2(pages);
-			pr_info("rounding mmap pages size to %u (%u pages)\n",
+			pr_info("rounding mmap pages size to %lu (%lu pages)\n",
 				pages * page_size, pages);
 		}
 	} else {
@@ -727,6 +728,11 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, const char *str,
 		}
 	}
 
+	if (pages > UINT_MAX || pages > SIZE_MAX / page_size) {
+		pr_err("--mmap_pages/-m value too big\n");
+		return -1;
+	}
+
 	size = perf_evlist__mmap_size(pages);
 	if (!size) {
 		pr_err("--mmap_pages/-m value must be a power of two.");

      reply	other threads:[~2013-10-25 10:33 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-22  7:34 [PATCH V2 00/14] perf tools: fixes and tweaks Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 01/14] perf tools: Fix non-debug build Adrian Hunter
2013-10-25 10:32   ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 02/14] perf evsel: Add a debug print if perf_event_open fails Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 03/14] perf script: Make perf_script a local variable Adrian Hunter
2013-10-23  5:55   ` David Ahern
2013-10-25 10:32   ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 04/14] perf script: Set up output options for in-stream attributes Adrian Hunter
2013-10-23  6:15   ` David Ahern
2013-10-23  6:41     ` Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 05/14] perf inject: Do not repipe attributes to a perf.data file Adrian Hunter
2013-10-25 10:32   ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 06/14] perf tools: Fix 32-bit cross build Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 07/14] perf tools: Fix libunwind build and feature detection for 32-bit build Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 08/14] perf evlist: Add a debug print if event buffer mmap fails Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 09/14] perf record: Add an option to force per-cpu mmaps Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 10/14] perf tools: Allow non-matching sample types Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 11/14] perf sched: Make struct perf_sched sched a local variable Adrian Hunter
2013-10-23  6:43   ` David Ahern
2013-10-23 13:16     ` Arnaldo Carvalho de Melo
2013-10-25 10:32   ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 12/14] perf sched: Fix optimized build time Adrian Hunter
2013-10-23  6:44   ` David Ahern
2013-10-23 13:17   ` Arnaldo Carvalho de Melo
2013-10-25 10:32   ` [tip:perf/core] perf sched: Optimize " tip-bot for Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 13/14] perf tools: Do not accept parse_tag_value() overflow Adrian Hunter
2013-10-25 10:32   ` [tip:perf/core] " tip-bot for Adrian Hunter
2013-10-22  7:34 ` [PATCH V2 14/14] perf tools: Validate that mmap_pages is not too big Adrian Hunter
2013-10-25 10:32   ` tip-bot for Adrian Hunter [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-2fbe4abe944868aafdde233557ac85379b60ce46@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=dsahern@gmail.com \
    --cc=efault@gmx.de \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@gmail.com \
    --cc=paulus@samba.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.