From f29a4cc32187d0a357bd79b4f8e99c42d72a7da7 Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 27 May 2024 22:01:52 -0300 Subject: [PATCH] vmmcache: fix page address passed to pmm_release --- kernel-src/mm/vmmcache.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel-src/mm/vmmcache.c b/kernel-src/mm/vmmcache.c index 5cb210a9..e9ebe6f4 100644 --- a/kernel-src/mm/vmmcache.c +++ b/kernel-src/mm/vmmcache.c @@ -119,12 +119,14 @@ int vmmcache_getpage(vnode_t *vnode, uintmax_t offset, page_t **res) { pmm_release(pmm_getpageaddress(newpage)); // wait for page to be ready - while ((page->flags & (PAGE_FLAGS_READY | PAGE_FLAGS_ERROR)) == 0) + while ((page->flags & (PAGE_FLAGS_READY | PAGE_FLAGS_ERROR)) == 0) { + arch_e9_puts("waiting for ready page\n"); sched_yield(); // TODO proper sleeping mechanism here + } if (page->flags & PAGE_FLAGS_ERROR) { // the thread handling the page in failed to read it, we should retry it and see whats up - pmm_release((page_t *)page); + pmm_release(pmm_getpageaddress((page_t *)page)); goto retry_err; } @@ -169,7 +171,7 @@ int vmmcache_getpage(vnode_t *vnode, uintmax_t offset, page_t **res) { newpage->offset = 0; RELEASE_LOCK(); - pmm_release(newpage); + pmm_release(pmm_getpageaddress(newpage)); return error; }