From 645e1e2809d602fb6e12b5a537ef8403c2d1a4ad Mon Sep 17 00:00:00 2001 From: Matheus Date: Tue, 16 Jul 2024 20:23:55 -0300 Subject: [PATCH] vmmcache: fix dirty file pages truncation --- kernel-src/mm/vmmcache.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kernel-src/mm/vmmcache.c b/kernel-src/mm/vmmcache.c index f1097072..6629b608 100644 --- a/kernel-src/mm/vmmcache.c +++ b/kernel-src/mm/vmmcache.c @@ -279,6 +279,10 @@ static int syncpage(page_t *page) { if ((page->flags & PAGE_FLAGS_TRUNCATED) == 0) { e = VOP_PUTPAGE(page->backing, page->offset, (page_t *)page); VOP_RELEASE(page->backing); + } else { + // page got truncated from the file while waiting to be written to disk + // its still holding a reference to the vnode, so release that + VOP_RELEASE(page->backing); } pmm_release(pmm_getpageaddress((page_t *)page));