From 35cc0ad861e12382d22bce773db664e0f59e7648 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Thu, 10 Jul 2025 03:22:29 -0400 Subject: kernel: exit: Clear out file descriptors on reap Ensure all file descriptors are freed and their respective vnodes released. Signed-off-by: Ian Moffett --- sys/kern/kern_exit.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index a4bf0f9..b1bd9ba 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include #include @@ -83,9 +85,23 @@ void proc_reap(struct proc *td) { struct pcb *pcbp; + struct filedesc *fdp; vaddr_t stack_va; paddr_t stack_pa; + /* Clear out all fds */ + for (size_t i = 4; i < PROC_MAX_FILEDES; ++i) { + fdp = td->fds[i]; + if (fdp == NULL) { + continue; + } + if (fdp->refcnt == 1) { + vfs_release_vnode(fdp->vp); + dynfree(fdp); + fdp = NULL; + } + } + pcbp = &td->pcb; unload_td(td); -- cgit v1.2.3