From 9a0fbaa0b0fd4815ef21952e83bd8b42a2b1fbe8 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sat, 11 Apr 2026 22:08:27 -0300 Subject: [PATCH] file: fix possible null pointer access --- kernel-src/fs/file.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/kernel-src/fs/file.c b/kernel-src/fs/file.c index 77d125b3..73722c2d 100644 --- a/kernel-src/fs/file.c +++ b/kernel-src/fs/file.c @@ -35,6 +35,13 @@ static file_t* newfile() { } static void cleanfile(file_t *file) { + if (file->advlock) { + // try unlocking it if applicable + VOP_ADVLOCK(file->vnode, ADVLOCK_UNLOCK, file->advlock); + ADVLOCK_UNREF(file->advlock); + file->advlock = NULL; + } + if (file->vnode) { vfs_close(file->vnode, fileflagstovnodeflags(file->flags)); VOP_RELEASE(file->vnode); @@ -45,12 +52,6 @@ static void cleanfile(file_t *file) { file->flags = 0; file->mode = 0; MUTEX_INIT(&file->mutex); - if (file->advlock) { - // try unlocking it if applicable - VOP_ADVLOCK(file->vnode, ADVLOCK_UNLOCK, file->advlock); - ADVLOCK_UNREF(file->advlock); - file->advlock = NULL; - } file->vnode = NULL; slab_free(filecache, file); }