From 7cccc1fb9951f91d91fe72114b39585e5b428384 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Tue, 30 Aug 2022 11:01:28 +0200 Subject: set up the stack in user/bootstrap instead of the kernel --- src/kernel/syscalls.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/kernel/syscalls.c') diff --git a/src/kernel/syscalls.c b/src/kernel/syscalls.c index 9f77679..37a0ce3 100644 --- a/src/kernel/syscalls.c +++ b/src/kernel/syscalls.c @@ -317,17 +317,18 @@ void __user *_syscall_memflag(void __user *addr, size_t len, int flags) { } - for (userptr_t iter = addr; iter < addr + len; iter += PAGE_SIZE) { - if (pagedir_iskern(pages, iter)) { + for (size_t off = 0; off < len; off += PAGE_SIZE) { + userptr_t page = addr + off; + if (pagedir_iskern(pages, page)) { // TODO reflect failure in return value continue; } - phys = pagedir_virt2phys(pages, iter, false, false); + phys = pagedir_virt2phys(pages, page, false, false); if (!phys) { // TODO test zeroing of user pages phys = page_zalloc(1); - pagedir_map(pages, iter, phys, true, true); + pagedir_map(pages, page, phys, true, true); } } SYSCALL_RETURN((uintptr_t)addr); -- cgit v1.2.3