diff --git a/lib/libc/io/unistd/munmap.c b/lib/libc/io/unistd/munmap.c index 27837d2..ec7d213 100644 --- a/lib/libc/io/unistd/munmap.c +++ b/lib/libc/io/unistd/munmap.c @@ -25,7 +25,17 @@ int munmap(void *addr, size_t length) status = address_space_unmap(address_space, (virt_addr_t)addr, length); + if (status != KERN_OK) { + kern_handle_close(address_space); + return __set_errno(__errno_from_kern_status(status)); + } + + status = address_space_release( + address_space, + (virt_addr_t)addr, + length); kern_handle_close(address_space); + if (status != KERN_OK) { return __set_errno(__errno_from_kern_status(status)); }