From c9daa8909313b020df57605d0bd50ac48b208d58 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Thu, 23 Feb 2023 15:38:17 +0100 Subject: toolchain: update, move to a Camellia-specific toolchain --- src/kernel/syscalls.c | 1 + src/user/lib/elfload.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/kernel/syscalls.c b/src/kernel/syscalls.c index 259b59f..0810720 100644 --- a/src/kernel/syscalls.c +++ b/src/kernel/syscalls.c @@ -319,6 +319,7 @@ void __user *_sys_memflag(void __user *addr, size_t len, int flags) { addr = (userptr_t)((uintptr_t __force)addr & ~PAGE_MASK); // align to page boundary if (flags & MEMFLAG_FINDFREE) { + // TODO space out page allocations to catch stupid bugs addr = pagedir_findfree(pages, addr, len); if (!(flags & MEMFLAG_PRESENT)) SYSCALL_RETURN((uintptr_t)addr); diff --git a/src/user/lib/elfload.c b/src/user/lib/elfload.c index cb7ce58..3862534 100644 --- a/src/user/lib/elfload.c +++ b/src/user/lib/elfload.c @@ -160,7 +160,7 @@ void elf_exec(void *base, char **argv, char **envp) { void *exebase = elf_loadmem(ehdr); if (!exebase) return; - void *newstack = _sys_memflag((void*)0x11000, 0x1000, MEMFLAG_FINDFREE | MEMFLAG_PRESENT); + void *newstack = _sys_memflag((void*)0x11000, 0x1000, MEMFLAG_FINDFREE | MEMFLAG_PRESENT) + 0x1000 - 8; if (!newstack) return; _freejmp_chstack(exebase + ehdr->e_entry, exebase, elf_spread(ehdr) + 0x1000, (const char**)argv, envp, newstack); -- cgit v1.2.3