From 7585cb5ad84babe9db8c6595de464e33fb878f0c Mon Sep 17 00:00:00 2001 From: sotech117 Date: Mon, 13 May 2024 12:10:55 +0000 Subject: s5 fixes and issues with weenix --- kernel/vm/mmap.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'kernel/vm/mmap.c') diff --git a/kernel/vm/mmap.c b/kernel/vm/mmap.c index 78aa3b5..ce932de 100644 --- a/kernel/vm/mmap.c +++ b/kernel/vm/mmap.c @@ -161,7 +161,6 @@ long do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t off, VMMAP_DIR_HILO, &vma ); - // check if vmmap_map() failed if (err < 0) { @@ -213,7 +212,7 @@ long do_munmap(void *addr, size_t len) } // Check if len is in bounds - if (len > USER_MEM_HIGH) + if (len > USER_MEM_HIGH || len == 0) { return -EINVAL; } @@ -224,17 +223,13 @@ long do_munmap(void *addr, size_t len) return -EINVAL; } - // Check if len is 0 - if (len == 0) - { - return -EINVAL; - } - // Remove the mapping + size_t start = ADDR_TO_PN(addr); + size_t end = ADDR_TO_PN(PAGE_ALIGN_UP((uintptr_t)addr + len)); long ret = vmmap_remove( curproc->p_vmmap, - ADDR_TO_PN(addr), - ADDR_TO_PN(PAGE_ALIGN_UP((uintptr_t)addr + len)) + start, + end - start ); return ret; } \ No newline at end of file -- cgit v1.2.3-70-g09d2