lib: launch: cleanup local exec vm-region once load is complete
This commit is contained in:
@@ -190,7 +190,10 @@ static kern_status_t create_exec_regions(struct elf_image *image)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (status != KERN_OK) {
|
if (status != KERN_OK) {
|
||||||
/* TODO cleanup e_local_exec */
|
vm_region_kill(image->e_local_exec);
|
||||||
|
kern_handle_close(image->e_local_exec);
|
||||||
|
image->e_local_exec = KERN_HANDLE_INVALID;
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -478,7 +481,10 @@ void elf_image_init(struct elf_image *out)
|
|||||||
{
|
{
|
||||||
memset(out, 0x0, sizeof(*out));
|
memset(out, 0x0, sizeof(*out));
|
||||||
|
|
||||||
kern_config_get(KERN_CFG_PAGE_SIZE, &out->e_page_size, sizeof out->e_page_size);
|
kern_config_get(
|
||||||
|
KERN_CFG_PAGE_SIZE,
|
||||||
|
&out->e_page_size,
|
||||||
|
sizeof out->e_page_size);
|
||||||
out->e_image = KERN_HANDLE_INVALID;
|
out->e_image = KERN_HANDLE_INVALID;
|
||||||
out->e_data = KERN_HANDLE_INVALID;
|
out->e_data = KERN_HANDLE_INVALID;
|
||||||
out->e_local_space = KERN_HANDLE_INVALID;
|
out->e_local_space = KERN_HANDLE_INVALID;
|
||||||
@@ -543,6 +549,7 @@ void elf_image_cleanup(struct elf_image *image)
|
|||||||
{
|
{
|
||||||
vm_region_unmap_relative(image->e_local_exec, 0, image->e_total_size);
|
vm_region_unmap_relative(image->e_local_exec, 0, image->e_total_size);
|
||||||
kern_handle_close(image->e_data);
|
kern_handle_close(image->e_data);
|
||||||
|
vm_region_kill(image->e_local_exec);
|
||||||
kern_handle_close(image->e_local_exec);
|
kern_handle_close(image->e_local_exec);
|
||||||
kern_handle_close(image->e_remote_exec);
|
kern_handle_close(image->e_remote_exec);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user