summaryrefslogtreecommitdiff
path: root/kc
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2022-02-24 19:16:09 +0000
committerAda Christine <adachristine18@gmail.com>2022-02-24 19:16:09 +0000
commit54ba636ecc8cbd44776c998a68a666b0b6f6abae (patch)
tree0b21c6f0d3513a6020137476daa2c4102af93351 /kc
parent9fcd505ab3106e9fbf586e6d16e53e3e44936215 (diff)
don't decrement references on non-physical pages
Diffstat (limited to 'kc')
-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)
{