From 92f848244796881994c1f147633123c45da219b6 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Sat, 13 Apr 2024 21:07:02 +0200 Subject: Kernel: Don't hard fail if the kernel can't allocate memory. Currently this is just a improvement of error handling but it should also try to free up memory where it is possible. --- kernel/elf.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'kernel/elf.c') diff --git a/kernel/elf.c b/kernel/elf.c index 3d03335..01f1e53 100644 --- a/kernel/elf.c +++ b/kernel/elf.c @@ -6,7 +6,6 @@ #include void *load_elf_file(const char *f, u32 *ds) { - // ELFHeader *header = kmalloc(sizeof(ELFHeader)); ELFHeader header; int fd = vfs_open(f, O_RDONLY, 0); if (fd < 0) { @@ -46,10 +45,10 @@ void *load_elf_file(const char *f, u32 *ds) { pages_to_allocate -= p_vaddr - (p_vaddr % 0x1000); pages_to_allocate /= 0x1000; - mmu_allocate_region((void *)p_vaddr, pages_to_allocate * 0x1000, - MMU_FLAG_RW, NULL); - - flush_tlb(); + if(!mmu_allocate_region((void *)p_vaddr, pages_to_allocate * 0x1000, + MMU_FLAG_RW, NULL)) { + return NULL; + } uintptr_t e = program_header.p_vaddr + program_header.p_memsz; if (e > end_of_code) { -- cgit v1.2.3