lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Tue,  6 Oct 2015 15:53:14 -0700
From:	Matt Mullins <mmullins@...pensource.com>
To:	acme@...nel.org
Cc:	Matt Mullins <mmullins@...pensource.com>,
	Vinson Lee <vlee@...pensource.com>,
	Peter Zijlstra <a.p.zijlstra@...llo.nl>,
	Ingo Molnar <mingo@...hat.com>, Jiri Olsa <jolsa@...hat.com>,
	Namhyung Kim <namhyung@...nel.org>,
	Adrian Hunter <adrian.hunter@...el.com>,
	Kan Liang <kan.liang@...el.com>,
	Andi Kleen <ak@...ux.intel.com>, linux-kernel@...r.kernel.org
Subject: [PATCH] perf tools: get version from uname(2), not /proc

Tools in kmod (e.g. modprobe) compose the module path from the release
from uname(2).  Because we use the UNAME26 personality, we need perf to
find modules located at the same path as the system tools.

Signed-off-by: Matt Mullins <mmullins@...pensource.com>
Cc: Vinson Lee <vlee@...pensource.com>
---
 tools/perf/util/machine.c | 28 ++++++----------------------
 1 file changed, 6 insertions(+), 22 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 5ef90be2a249..51199bc271e9 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -11,6 +11,7 @@
 #include "vdso.h"
 #include <stdbool.h>
 #include <symbol/kallsyms.h>
+#include <sys/utsname.h>
 #include "unwind.h"
 #include "linux/hash.h"
 
@@ -903,31 +904,14 @@ static void map_groups__fixup_end(struct map_groups *mg)
 		__map_groups__fixup_end(mg, i);
 }
 
-static char *get_kernel_version(const char *root_dir)
+static char *get_kernel_version(void)
 {
-	char version[PATH_MAX];
-	FILE *file;
-	char *name, *tmp;
-	const char *prefix = "Linux version ";
+	struct utsname utsname;
 
-	sprintf(version, "%s/proc/version", root_dir);
-	file = fopen(version, "r");
-	if (!file)
+	if (uname(&utsname))
 		return NULL;
 
-	version[0] = '\0';
-	tmp = fgets(version, sizeof(version), file);
-	fclose(file);
-
-	name = strstr(version, prefix);
-	if (!name)
-		return NULL;
-	name += strlen(prefix);
-	tmp = strchr(name, ' ');
-	if (tmp)
-		*tmp = '\0';
-
-	return strdup(name);
+	return strdup(utsname.release);
 }
 
 static bool is_kmod_dso(struct dso *dso)
@@ -1027,7 +1011,7 @@ static int machine__set_modules_path(struct machine *machine)
 	char *version;
 	char modules_path[PATH_MAX];
 
-	version = get_kernel_version(machine->root_dir);
+	version = get_kernel_version();
 	if (!version)
 		return -1;
 
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists