Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1404641 > unrolled thread

[tip:perf/urgent] perf machine: Do not bail out if not managing to read ref reloc symbol

Started bytip-bot for Arnaldo Carvalho de Melo <tipbot@zytor.com>
First post2016-05-20 19:50 +0200
Last post2016-05-20 19:50 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [tip:perf/urgent] perf machine: Do not bail out if not managing to  read ref reloc symbol tip-bot for Arnaldo Carvalho de Melo <tipbot@zytor.com> - 2016-05-20 19:50 +0200

#1404641 — [tip:perf/urgent] perf machine: Do not bail out if not managing to read ref reloc symbol

Fromtip-bot for Arnaldo Carvalho de Melo <tipbot@zytor.com>
Date2016-05-20 19:50 +0200
Subject[tip:perf/urgent] perf machine: Do not bail out if not managing to read ref reloc symbol
Message-ID<rAWIF-aw-1@gated-at.bofh.it>
Commit-ID:  45e90056904b12d8dd74e0d2ea6dfd5e4394104d
Gitweb:     http://git.kernel.org/tip/45e90056904b12d8dd74e0d2ea6dfd5e4394104d
Author:     Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Tue, 17 May 2016 11:52:26 -0300
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 20 May 2016 11:43:54 -0300

perf machine: Do not bail out if not managing to read ref reloc symbol

This means the user can't access /proc/kallsyms, for instance, because
/proc/sys/kernel/kptr_restrict is set to 1.

Instead leave the ref_reloc_sym as NULL and code using it will cope.

This allows 'perf trace' to work on such systems for !root, the only
issue would be when trying to resolve kernel symbols, which happens,
for instance, in some libtracevent plugins.  A warning for that case
will be provided in the next patch in this series.

Noticed in Ubuntu 16.04, that comes with kptr_restrict=1.

Reported-by: Milian Wolff <milian.wolff@kdab.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-knpu3z4iyp2dxpdfm798fac4@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/machine.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 7ba9fad..b277984 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1135,10 +1135,10 @@ int machine__create_kernel_maps(struct machine *machine)
 {
 	struct dso *kernel = machine__get_kernel(machine);
 	const char *name;
-	u64 addr = machine__get_running_kernel_start(machine, &name);
+	u64 addr;
 	int ret;
 
-	if (!addr || kernel == NULL)
+	if (kernel == NULL)
 		return -1;
 
 	ret = __machine__create_kernel_maps(machine, kernel);
@@ -1160,8 +1160,9 @@ int machine__create_kernel_maps(struct machine *machine)
 	 */
 	map_groups__fixup_end(&machine->kmaps);
 
-	if (maps__set_kallsyms_ref_reloc_sym(machine->vmlinux_maps, name,
-					     addr)) {
+	addr = machine__get_running_kernel_start(machine, &name);
+	if (!addr) {
+	} else if (maps__set_kallsyms_ref_reloc_sym(machine->vmlinux_maps, name, addr)) {
 		machine__destroy_kernel_maps(machine);
 		return -1;
 	}

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web