mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
munmap: fix memory leak
This commit is contained in:
@@ -395,6 +395,7 @@ void *vmm_map(void *addr, volatile size_t size, int flags, mmuflags_t mmuflags,
|
||||
if (addr == NULL)
|
||||
addr = KERNELSPACE_START;
|
||||
|
||||
// XXX maps where addr is not page aligned can break
|
||||
addr = (void *)ROUND_DOWN((uintptr_t)addr, PAGE_SIZE);
|
||||
if (flags & VMM_FLAGS_PAGESIZE)
|
||||
size *= PAGE_SIZE;
|
||||
@@ -482,7 +483,9 @@ void *vmm_map(void *addr, volatile size_t size, int flags, mmuflags_t mmuflags,
|
||||
}
|
||||
|
||||
void vmm_unmap(void *addr, size_t size, int flags) {
|
||||
// XXX maps where addr is not page aligned can break
|
||||
addr = (void *)ROUND_DOWN((uintptr_t)addr, PAGE_SIZE);
|
||||
|
||||
if (flags & VMM_FLAGS_PAGESIZE)
|
||||
size *= PAGE_SIZE;
|
||||
else
|
||||
|
||||
@@ -18,7 +18,7 @@ syscallret_t syscall_munmap(context_t *ctx, void *addr, size_t length) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
vmm_unmap(addr, length / PAGE_SIZE, 0);
|
||||
vmm_unmap(addr, length, 0);
|
||||
|
||||
ret.ret = 0;
|
||||
ret.errno = 0;
|
||||
|
||||
Reference in New Issue
Block a user