diff options
| -rw-r--r-- | kc/core/memory/page_stack.c | 5 |
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) { |
