From 6abb6c1c0d73aeb73c92085fbae99690537c46d8 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Tue, 23 Sep 2025 11:32:15 -0400 Subject: kern/amd64: proc: Deallocate mapped frames on exit Signed-off-by: Ian Moffett --- src/sys/arch/amd64/os/os_proc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/sys/arch/amd64/os/os_proc.c') diff --git a/src/sys/arch/amd64/os/os_proc.c b/src/sys/arch/amd64/os/os_proc.c index 8318476..d944f41 100644 --- a/src/sys/arch/amd64/os/os_proc.c +++ b/src/sys/arch/amd64/os/os_proc.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -221,9 +222,11 @@ done: int md_proc_kill(struct proc *procp, int flags) { + const size_t PSIZE = DEFAULT_PAGESIZE; struct proc *self; struct pcore *core = this_core(); struct md_pcb *pcbp; + struct vm_range *range; if (core == NULL) { return -ENXIO; @@ -234,6 +237,15 @@ md_proc_kill(struct proc *procp, int flags) procp = core->curproc; } + /* Free every range */ + TAILQ_FOREACH(range, &procp->maplist, link) { + if (range == NULL) { + continue; + } + + vm_free_frame(range->pa_base, range->len / PSIZE); + } + /* Release the VAS */ pcbp = &procp->pcb; mmu_free_vas(&pcbp->vas); -- cgit v1.2.3