execve(): fix memory leak

This commit is contained in:
Balazs Gerofi
2017-01-17 16:18:26 +09:00
parent c1dae4d8b0
commit c7686fdf4e

View File

@ -1908,6 +1908,7 @@ SYSCALL_DECLARE(execve)
if (ret != 0) {
dkprintf("execve(): ERROR: host failed to load elf header, errno: %d\n",
ret);
ihk_mc_free_pages(desc, 1);
return -ret;
}
@ -1931,6 +1932,7 @@ SYSCALL_DECLARE(execve)
kprintf("ERROR: no argv for executable: %s?\n", kfilename? kfilename: "");
if(kfilename)
kfree(kfilename);
ihk_mc_free_pages(desc, 1);
return -EINVAL;
}
@ -1999,6 +2001,10 @@ SYSCALL_DECLARE(execve)
dkprintf("execve(): switching to new process\n");
proc->execed = 1;
ihk_mc_free_pages(desc, 1);
kfree(argv_flat);
kfree(envp_flat);
/* Lock run queue because enter_user_mode expects to release it */
cpu_local_var(runq_irqstate) =
ihk_mc_spinlock_lock(&(get_this_cpu_local_var()->runq_lock));