Compare commits

...

3 Commits

Author SHA1 Message Date
b2d04c5983 vm: object: zero-initialise pages allocated for vm-object 2026-02-21 23:19:49 +00:00
6c2ca888ee x86_64: remove kernel image post-build ELF32 patch
this patch must now be done by the wider OS build system, to avoid
interference with any bootloaders that don't support this kind of
patching (e.g GRUB i386-pc)
2026-02-21 23:18:22 +00:00
044b3688aa vm: cache: all allocations are now zero-initialised 2026-02-21 23:18:09 +00:00
4 changed files with 4 additions and 8 deletions

View File

@@ -2,9 +2,3 @@ target_compile_options(${kernel_exe_name} PRIVATE
-z max-page-size=0x1000 -m64 -mcmodel=large -mno-red-zone -mno-mmx -z max-page-size=0x1000 -m64 -mcmodel=large -mno-red-zone -mno-mmx
-mno-sse -mno-sse2 -D_64BIT -DBYTE_ORDER=1234) -mno-sse -mno-sse2 -D_64BIT -DBYTE_ORDER=1234)
target_link_libraries(${kernel_exe_name} "-z max-page-size=0x1000" "-T ${CMAKE_CURRENT_SOURCE_DIR}/arch/x86_64/layout.ld") target_link_libraries(${kernel_exe_name} "-z max-page-size=0x1000" "-T ${CMAKE_CURRENT_SOURCE_DIR}/arch/x86_64/layout.ld")
add_custom_command(TARGET ${kernel_exe_name} POST_BUILD
COMMAND ${BUILD_TOOLS_DIR}/e64patch $<TARGET_FILE:${kernel_exe_name}>
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Patching kernel elf64 image"
)

View File

@@ -50,8 +50,6 @@ struct object *object_create(struct object_type *type)
return NULL; return NULL;
} }
memset(obj_buf, 0x00, type->ob_size);
struct object *obj = (struct object *)((unsigned char *)obj_buf struct object *obj = (struct object *)((unsigned char *)obj_buf
+ type->ob_header_offset); + type->ob_header_offset);

View File

@@ -198,6 +198,8 @@ void *vm_cache_alloc(struct vm_cache *cache, enum vm_flags flags)
} }
spin_unlock_irqrestore(&cache->c_lock, irq_flags); spin_unlock_irqrestore(&cache->c_lock, irq_flags);
memset(p, 0x0, cache->c_obj_size);
return p; return p;
} }

View File

@@ -286,6 +286,8 @@ extern struct vm_page *vm_object_alloc_page(
return NULL; return NULL;
} }
void *page_buf = vm_page_get_vaddr(page);
memset(page_buf, 0x0, vm_page_get_size_bytes(page));
tracek("vm-object: [%s] alloc offset %zx -> page %zx", tracek("vm-object: [%s] alloc offset %zx -> page %zx",
vo->vo_name, vo->vo_name,
offset, offset,