|
@@ -717,7 +717,7 @@ static char *get_kernel_version(const char *root_dir)
|
|
|
}
|
|
|
|
|
|
static int map_groups__set_modules_path_dir(struct map_groups *mg,
|
|
|
- const char *dir_name)
|
|
|
+ const char *dir_name, int depth)
|
|
|
{
|
|
|
struct dirent *dent;
|
|
|
DIR *dir = opendir(dir_name);
|
|
@@ -742,7 +742,15 @@ static int map_groups__set_modules_path_dir(struct map_groups *mg,
|
|
|
!strcmp(dent->d_name, ".."))
|
|
|
continue;
|
|
|
|
|
|
- ret = map_groups__set_modules_path_dir(mg, path);
|
|
|
+ /* Do not follow top-level source and build symlinks */
|
|
|
+ if (depth == 0) {
|
|
|
+ if (!strcmp(dent->d_name, "source") ||
|
|
|
+ !strcmp(dent->d_name, "build"))
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret = map_groups__set_modules_path_dir(mg, path,
|
|
|
+ depth + 1);
|
|
|
if (ret < 0)
|
|
|
goto out;
|
|
|
} else {
|
|
@@ -786,11 +794,11 @@ static int machine__set_modules_path(struct machine *machine)
|
|
|
if (!version)
|
|
|
return -1;
|
|
|
|
|
|
- snprintf(modules_path, sizeof(modules_path), "%s/lib/modules/%s/kernel",
|
|
|
+ snprintf(modules_path, sizeof(modules_path), "%s/lib/modules/%s",
|
|
|
machine->root_dir, version);
|
|
|
free(version);
|
|
|
|
|
|
- return map_groups__set_modules_path_dir(&machine->kmaps, modules_path);
|
|
|
+ return map_groups__set_modules_path_dir(&machine->kmaps, modules_path, 0);
|
|
|
}
|
|
|
|
|
|
static int machine__create_module(void *arg, const char *name, u64 start)
|