diff options
| author | Ada Christine <adachristine18@gmail.com> | 2022-02-24 19:16:09 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2022-02-24 19:16:09 +0000 |
| commit | 54ba636ecc8cbd44776c998a68a666b0b6f6abae (patch) | |
| tree | 0b21c6f0d3513a6020137476daa2c4102af93351 | |
| parent | 9fcd505ab3106e9fbf586e6d16e53e3e44936215 (diff) | |
don't decrement references on non-physical pages
| -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) { |
