diff options
author | Anton Kling <anton@kling.gg> | 2024-04-12 14:03:29 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-04-12 14:13:08 +0200 |
commit | b450065984b1588966694579230dc40c802212e7 (patch) | |
tree | e67a056b1f3d0d2fa9a8f07fd76f925080dfbf44 /kernel/sched | |
parent | ca082f686fd2dc7ee6f0284421f6212d6d4acee8 (diff) |
Kernel/MMU: Dellocate pagedirectory when process exits.
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/scheduler.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/sched/scheduler.c b/kernel/sched/scheduler.c index 52e4848..45969b0 100644 --- a/kernel/sched/scheduler.c +++ b/kernel/sched/scheduler.c @@ -191,9 +191,6 @@ void free_process(process_t *p) { mmu_remove_virtual_physical_address_mapping(m->u_address, m->length); } - // NOTE: Kernel stuff begins at 0x90000000 - mmu_free_address_range((void *)0x1000, 0x90000000, p->cr3); - list_free(&p->read_list); list_free(&p->write_list); list_free(&p->disconnect_list); @@ -202,9 +199,12 @@ void free_process(process_t *p) { list_free(&p->event_queue); list_free(&p->file_descriptors); kfree(p->tcb); + + mmu_free_pagedirectory(p->cr3); } void exit_process(process_t *p, int status) { + disable_interrupts(); assert(p->pid != 1); if (p->parent) { p->parent->halts[WAIT_CHILD_HALT] = 0; |