On 11/8/13, 2:11 AM, Adrian Hunter wrote:
This prevents:

     --out-pages=0

from working e.g.

     tools/perf/perf record -vv --out-pages=0 uname
     rounding mmap pages size to 4096 (1 pages)

Although without this patch:

     tools/perf/perf record -vv --out-pages=0 uname
     --mmap_pages/-m value must be a power of two.
      usage: perf record [<options>] [<command>]
         or: perf record [<options>] -- <command> [<options>]

             --out-pages <pages>
                           Number of pages or size with units to use for
output (default 64M)

Also there is:

     tools/perf/perf record -vv --no-out-pages uname
     Segmentation fault (core dumped)

This is problem with perf_evlist__parse_mmap_pages(); same thing happens with --no-map-pages.

With the attached both round a 0 up to 1 page:

[daahern@nxos-vdc-dev3 perf]$ perf record --out-pages 0 uname
rounding mmap pages size to 4096 (1 pages)
Linux
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.008 MB perf.data (~339 samples) ]

[daahern@nxos-vdc-dev3 perf]$ perf record --mmap-pages 0 uname
rounding mmap pages size to 4096 (1 pages)
Linux
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.008 MB perf.data (~339 samples) ]

[daahern@nxos-vdc-dev3 perf]$ perf record --no-mmap-pages uname

 usage: perf record [<options>] [<command>]
    or: perf record [<options>] -- <command> [<options>]

    -m, --mmap-pages <pages>
                          number of mmap data pages
David

>From fc7c5a6b2b47a2e7a04613b4e82e478a0dcabf42 Mon Sep 17 00:00:00 2001
From: David Ahern <[email protected]>
Date: Fri, 8 Nov 2013 07:37:43 -0700
Subject: [PATCH] perf record: Fix segfault with --no-mmap-pages

Adrian reported a segfault when using --no-out-pages
$ tools/perf/perf record -vv --no-out-pages uname
Segmentation fault (core dumped)

The same occurs with --no-mmap-pages. Fix by checking that str is non-NULL
before parsing it.

Reported-by: Adrian Hunter <[email protected]>
Signed-off-by: David Ahern <[email protected]>
Cc: Adrian Hunter <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jiri Olsa <[email protected]>
---
 tools/perf/util/evlist.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 9ec3a5a45f22..1f103616d906 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -718,6 +718,9 @@ int perf_evlist__parse_mmap_pages(const struct option *opt, 
const char *str,
                { .tag  = 0 },
        };
 
+       if (str == NULL)
+               return -1;
+
        val = parse_tag_value(str, tags);
        if (val != (unsigned long) -1) {
                /* we got file size value */
-- 
1.8.3.4 (Apple Git-47)

Reply via email to