From 562a729c25dee390803341ced8eb05fee48b222a Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 23 Feb 2026 18:45:12 +0000 Subject: [PATCH] lib: launch: cleanup local exec vm-region once load is complete --- lib/liblaunch/elf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/liblaunch/elf.c b/lib/liblaunch/elf.c index f8c0ff3..1d44c20 100644 --- a/lib/liblaunch/elf.c +++ b/lib/liblaunch/elf.c @@ -190,7 +190,10 @@ static kern_status_t create_exec_regions(struct elf_image *image) } 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; } @@ -478,7 +481,10 @@ void elf_image_init(struct elf_image *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_data = 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); 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_remote_exec); }