summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kc/core/memory/page_stack.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kc/core/memory/page_stack.c b/kc/core/memory/page_stack.c
index 92c5cff..aed38f2 100644
--- a/kc/core/memory/page_stack.c
+++ b/kc/core/memory/page_stack.c
@@ -62,8 +62,6 @@ kc_phys_addr page_stack_alloc(enum page_alloc_flags type)
void page_stack_free(kc_phys_addr page)
{
- // immediately release a reference
- int referents = page_stack_dec_ref(page);
// freeing a page only makes sense for present physical pages
if (!page_stack_get_present(page))
@@ -71,6 +69,9 @@ void page_stack_free(kc_phys_addr page)
return;
}
+ // immediately release a reference
+ int referents = page_stack_dec_ref(page);
+
// only actually free the page if it has no more references
if (referents == 0)
{