From 0b4fdb5384c826c111c8fb0c4619fad7c82a2b81 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Fri, 26 Dec 2025 14:02:12 -0500 Subject: [PATCH] don't mark framebuffer as free when destroying process --- src/kernel/process.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/kernel/process.c b/src/kernel/process.c index c149cdd..f840299 100644 --- a/src/kernel/process.c +++ b/src/kernel/process.c @@ -262,10 +262,14 @@ void destroy_process(struct process *process) { if (process->p3_virtual_base[p3i]) { for (int p2i = 0; p2i < 512; ++p2i) if (process->p2_virtual_bases[p3i][p2i]) { - for (int p1i = 0; p1i < 512; ++p1i) - mark_physical_memory_free( - process->p1_virtual_bases[p3i][p2i][p1i] & 0x7ffffffffffff000, - 4096); + for (int p1i = 0; p1i < 512; ++p1i) { + uint64_t pma = + process->p1_virtual_bases[p3i][p2i][p1i] & 0x7ffffffffffff000; + if (pma >= fb_physical_base && + pma < fb_physical_base + fb_pitch * fb_height) + continue; + mark_physical_memory_free(pma, 4096); + } unmap_and_free_kernel_page(process->p1_virtual_bases[p3i][p2i]); } unmap_and_free_kernel_page(process->p2_virtual_bases[p3i]);