|
@@ -669,25 +669,26 @@ struct machine *machines__find(struct rb_root *self, pid_t pid)
|
|
|
struct machine *machines__findnew(struct rb_root *self, pid_t pid)
|
|
|
{
|
|
|
char path[PATH_MAX];
|
|
|
- const char *root_dir;
|
|
|
+ const char *root_dir = "";
|
|
|
struct machine *machine = machines__find(self, pid);
|
|
|
|
|
|
- if (!machine || machine->pid != pid) {
|
|
|
- if (pid == HOST_KERNEL_ID || pid == DEFAULT_GUEST_KERNEL_ID)
|
|
|
- root_dir = "";
|
|
|
- else {
|
|
|
- if (!symbol_conf.guestmount)
|
|
|
- goto out;
|
|
|
- sprintf(path, "%s/%d", symbol_conf.guestmount, pid);
|
|
|
- if (access(path, R_OK)) {
|
|
|
- pr_err("Can't access file %s\n", path);
|
|
|
- goto out;
|
|
|
- }
|
|
|
- root_dir = path;
|
|
|
+ if (machine && (machine->pid == pid))
|
|
|
+ goto out;
|
|
|
+
|
|
|
+ if ((pid != HOST_KERNEL_ID) &&
|
|
|
+ (pid != DEFAULT_GUEST_KERNEL_ID) &&
|
|
|
+ (symbol_conf.guestmount)) {
|
|
|
+ sprintf(path, "%s/%d", symbol_conf.guestmount, pid);
|
|
|
+ if (access(path, R_OK)) {
|
|
|
+ pr_err("Can't access file %s\n", path);
|
|
|
+ machine = NULL;
|
|
|
+ goto out;
|
|
|
}
|
|
|
- machine = machines__add(self, pid, root_dir);
|
|
|
+ root_dir = path;
|
|
|
}
|
|
|
|
|
|
+ machine = machines__add(self, pid, root_dir);
|
|
|
+
|
|
|
out:
|
|
|
return machine;
|
|
|
}
|