diff mbox

[2/2] perf record: Fix crash when kptr is restricted

Message ID 1464081688-167940-2-git-send-email-wangnan0@huawei.com
State Accepted
Commit 3dc6c1d54ff4cc9ce7e8513c286c970304cde20b
Headers show

Commit Message

Wang Nan May 24, 2016, 9:21 a.m. UTC
Before this patch, a simple 'perf record' could fail if kptr_restrict
is set to 1 (for normal user) or 2 (for root):

 # perf record ls
 WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,
 check /proc/sys/kernel/kptr_restrict.

 Samples in kernel functions may not be resolved if a suitable vmlinux
 file is not found in the buildid cache or in the vmlinux path.

 Samples in kernel modules won't be resolved at all.

 If some relocation was applied (e.g. kexec) symbols may be misresolved
 even with a suitable vmlinux or kallsyms file.

 Segmentation fault (core dumped)

This patch skips perf_event__synthesize_kernel_mmap() when kptr is not
available.

Signed-off-by: Wang Nan <wangnan0@huawei.com>

Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
---
 tools/perf/util/event.c | 2 ++
 1 file changed, 2 insertions(+)

-- 
1.8.3.4
diff mbox

Patch

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index f6fcc68..9b141f1 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -673,6 +673,8 @@  int perf_event__synthesize_kernel_mmap(struct perf_tool *tool,
 	int err;
 	union perf_event *event;
 
+	if (symbol_conf.kptr_restrict)
+		return -1;
 	if (map == NULL)
 		return -1;