lib: launch: cleanup local exec vm-region once load is complete

This commit is contained in:
2026-02-23 18:45:12 +00:00
parent 5721daa049
commit 562a729c25

View File

@@ -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);
} }