Commit c192524e authored by Jiri Olsa's avatar Jiri Olsa Committed by Arnaldo Carvalho de Melo
Browse files

perf machine: Fix mmap name setup



Leo reported broken -k option behavior. The reason is that we used
symbol_conf.vmlinux_name as a source for mmap event name, but in fact
it's a vmlinux path.

Moving the symbol_conf.vmlinux_name check for both host and guest to the
proper place and out of the machine__set_mmap_name function.

Reported-by: default avatarLeo Yan <leo.yan@linaro.org>
Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
Tested-by: default avatarLeo Yan <leo.yan@linaro.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Fixes: commit ("8c7f1bb3 perf machine: Move kernel mmap name into struct machine")
Link: http://lkml.kernel.org/r/20180312152406.10141-1-jolsa@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 26e4711f
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -50,21 +50,13 @@ static void machine__threads_init(struct machine *machine)

static int machine__set_mmap_name(struct machine *machine)
{
	if (machine__is_host(machine)) {
		if (symbol_conf.vmlinux_name)
			machine->mmap_name = strdup(symbol_conf.vmlinux_name);
		else
	if (machine__is_host(machine))
		machine->mmap_name = strdup("[kernel.kallsyms]");
	} else if (machine__is_default_guest(machine)) {
		if (symbol_conf.default_guest_vmlinux_name)
			machine->mmap_name = strdup(symbol_conf.default_guest_vmlinux_name);
		else
	else if (machine__is_default_guest(machine))
		machine->mmap_name = strdup("[guest.kernel.kallsyms]");
	} else {
		if (asprintf(&machine->mmap_name, "[guest.kernel.kallsyms.%d]",
	else if (asprintf(&machine->mmap_name, "[guest.kernel.kallsyms.%d]",
			  machine->pid) < 0)
		machine->mmap_name = NULL;
	}

	return machine->mmap_name ? 0 : -ENOMEM;
}
@@ -794,9 +786,15 @@ static struct dso *machine__get_kernel(struct machine *machine)
	struct dso *kernel;

	if (machine__is_host(machine)) {
		if (symbol_conf.vmlinux_name)
			vmlinux_name = symbol_conf.vmlinux_name;

		kernel = machine__findnew_kernel(machine, vmlinux_name,
						 "[kernel]", DSO_TYPE_KERNEL);
	} else {
		if (symbol_conf.default_guest_vmlinux_name)
			vmlinux_name = symbol_conf.default_guest_vmlinux_name;

		kernel = machine__findnew_kernel(machine, vmlinux_name,
						 "[guest.kernel]",
						 DSO_TYPE_GUEST_KERNEL);