diff --git a/src/system/kernel/elf.cpp b/src/system/kernel/elf.cpp index 9edc177f14..2b7fa61678 100644 --- a/src/system/kernel/elf.cpp +++ b/src/system/kernel/elf.cpp @@ -820,6 +820,10 @@ insert_preloaded_image(struct preloaded_image *preloadedImage, bool kernel) preloadedImage->id = image->id; // modules_init() uses this information to get the preloaded images + // we now no longer need to write to the text area anymore + set_area_protection(image->text_region.id, + B_KERNEL_READ_AREA | B_KERNEL_EXECUTE_AREA); + return B_OK; error1: diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp index a21c96aa8d..8729d7c193 100644 --- a/src/system/kernel/vm/vm.cpp +++ b/src/system/kernel/vm/vm.cpp @@ -2167,6 +2167,8 @@ create_preloaded_image_areas(struct preloaded_image *image) image->text_region.id = create_area(name, &address, B_EXACT_ADDRESS, PAGE_ALIGN(image->text_region.size), B_ALREADY_WIRED, B_KERNEL_READ_AREA | B_KERNEL_WRITE_AREA); + // this will later be remapped read-only/executable by the + // ELF initialization code strcpy(name + length, "_data"); address = (void *)ROUNDOWN(image->data_region.start, B_PAGE_SIZE);