diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2015-05-19 15:05:45 +0200 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-05-27 17:21:43 +0200 |
commit | 554e92ed8fcdbcad736ef906c393847d44d52692 (patch) | |
tree | a614aa7e175aad3f5e36540e03bbd7e9c1df5dcd /tools/perf/tests/hists_cumulate.c | |
parent | perf build: Fix libunwind feature detection on 32-bit x86 (diff) | |
download | linux-554e92ed8fcdbcad736ef906c393847d44d52692.tar.xz linux-554e92ed8fcdbcad736ef906c393847d44d52692.zip |
perf session: Fix perf_session__peek_event()
perf_session__peek_event() generally leverages there being a single mmap
of the perf.data file, however on 32-bit platforms when there is more
that 32MiB of data, then there are multiple mmaps, so
perf_session__peek_event() reads from the file.
In that case a couple of bugs were exposed (note how the seg. fault
appears with >32M of data):
$ perf record --per-thread -e intel_bts// ../rtit-tests/loopy 1000000
[ perf record: Woken up 13 times to write data ]
[ perf record: Captured and wrote 24.568 MB perf.data ]
$ perf script > /dev/null
$ perf record --per-thread -e intel_bts// ../rtit-tests/loopy 10000000
[ perf record: Woken up 136 times to write data ]
[ perf record: Captured and wrote 270.794 MB perf.data ]
$ perf script > /dev/null
Segmentation fault (core dumped)
The wrong address was being passed to the readn() function and the
buffer size was not being checked.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@gmail.com>
Link: http://lkml.kernel.org/r/1432040746-1755-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/tests/hists_cumulate.c')
0 files changed, 0 insertions, 0 deletions