Commit-ID:  e94eedab3ab8201fd41480171b2fabbf3c5b1ae0
Gitweb:     http://git.kernel.org/tip/e94eedab3ab8201fd41480171b2fabbf3c5b1ae0
Author:     David Ahern <david.ah...@oracle.com>
AuthorDate: Tue, 24 Mar 2015 16:14:09 -0400
Committer:  Arnaldo Carvalho de Melo <a...@redhat.com>
CommitDate: Thu, 26 Mar 2015 10:52:28 -0300

perf timechart: Fix SIBGUS error on sparc64

perf timechart -T on sparc64 is terminating due to SIGBUS. Backtrace:

Program received signal SIGBUS, Bus error.
0x0000000000173d7c in perf_evsel__intval (evsel=<value optimized out>, 
sample=0x7feffffda28, name=0x289b28 "prev_state")
    at util/evsel.c:1918
1918    util/evsel.c: No such file or directory.
        in util/evsel.c
Missing separate debuginfos, use: debuginfo-install 
audit-libs-2.3.7-1.0.1.el6.sparc64 bzip2-libs-1.0.5-7.el6_0.sparc64 
elfutils-libelf-0.155-2.0.3.el6.sparc64 elfutils-libs-0.155-2.0.3.el6.sparc64 
glibc-2.12-1.132.0.8.el6_5.sparc64 numactl-2.0.7-8.el6.sparc64 
python-libs-2.6.6-52.0.2.el6.sparc64 slang-2.2.1-1.el6.sparc64 
xz-libs-4.999.9-0.3.beta.20091007git.el6.sparc64 zlib-1.2.3-29.el6.sparc64
(gdb) bt
0  0x0000000000173d7c in perf_evsel__intval (evsel=<value optimized out>, 
sample=0x7feffffda28,
    name=0x289b28 "prev_state") at util/evsel.c:1918
1  0x0000000000123b94 in process_sample_sched_switch (tchart=0x7feffffe040, 
evsel=0x4ca850, sample=0x7feffffda28,
    backtrace=0xc39010 "") at builtin-timechart.c:627
2  0x0000000000122828 in process_sample_event (tool=0x7feffffe040, event=<value 
optimized out>, sample=0x7feffffda28,
    evsel=0x4ca850, machine=0x4c9c88) at builtin-timechart.c:569

Another extended load on unaligned pointer. As before fix by copying to
a temporary variable using memcpy.

Signed-off-by: David Ahern <david.ah...@oracle.com>
Link: 
http://lkml.kernel.org/r/1427228049-51893-1-git-send-email-david.ah...@oracle.com
Signed-off-by: Arnaldo Carvalho de Melo <a...@redhat.com>
---
 tools/perf/util/evsel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index bb4eff2..358e595 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -1915,7 +1915,7 @@ u64 perf_evsel__intval(struct perf_evsel *evsel, struct 
perf_sample *sample,
                value = *(u32 *)ptr;
                break;
        case 8:
-               value = *(u64 *)ptr;
+               memcpy(&value, ptr, sizeof(u64));
                break;
        default:
                return 0;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to