|
@@ -50,6 +50,8 @@ static void machine__threads_init(struct machine *machine)
|
|
|
|
|
|
int machine__init(struct machine *machine, const char *root_dir, pid_t pid)
|
|
|
{
|
|
|
+ int err = -ENOMEM;
|
|
|
+
|
|
|
memset(machine, 0, sizeof(*machine));
|
|
|
map_groups__init(&machine->kmaps, machine);
|
|
|
RB_CLEAR_NODE(&machine->rb_node);
|
|
@@ -79,7 +81,7 @@ int machine__init(struct machine *machine, const char *root_dir, pid_t pid)
|
|
|
char comm[64];
|
|
|
|
|
|
if (thread == NULL)
|
|
|
- return -ENOMEM;
|
|
|
+ goto out;
|
|
|
|
|
|
snprintf(comm, sizeof(comm), "[guest/%d]", pid);
|
|
|
thread__set_comm(thread, comm, 0);
|
|
@@ -87,7 +89,11 @@ int machine__init(struct machine *machine, const char *root_dir, pid_t pid)
|
|
|
}
|
|
|
|
|
|
machine->current_tid = NULL;
|
|
|
+ err = 0;
|
|
|
|
|
|
+out:
|
|
|
+ if (err)
|
|
|
+ zfree(&machine->root_dir);
|
|
|
return 0;
|
|
|
}
|
|
|
|