From 5a54949e0e8603573f9f3be5d60e2f2990085f53 Mon Sep 17 00:00:00 2001 From: Matheus Date: Fri, 29 Aug 2025 17:13:17 -0300 Subject: [PATCH] vfs: fix double release --- kernel-src/fs/vfs.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/kernel-src/fs/vfs.c b/kernel-src/fs/vfs.c index c9637b10..1e0d7fa4 100644 --- a/kernel-src/fs/vfs.c +++ b/kernel-src/fs/vfs.c @@ -238,13 +238,11 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size *written = 0; // can't write a size 0 buffer if (size == 0) - goto leave; + return 0; // overflow - if (size + offset < offset) { - err = EINVAL; - goto leave; - } + if (size + offset < offset) + return EINVAL; MUTEX_ACQUIRE(&node->size_lock); @@ -260,7 +258,7 @@ int vfs_write_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size if (node->type == V_TYPE_REGULAR && newsize) { // do resize stuff if regular and applicable VOP_LOCK(node); - err = VOP_RESIZE(node, newsize, ¤t_thread()->proc->cred); + err = VOP_RESIZE(node, newsize, getcred()); VOP_UNLOCK(node); if (err) goto leave; @@ -358,13 +356,11 @@ int vfs_read_iovec(vnode_t *node, iovec_iterator_t *iovec_iterator, size_t size, *bytesread = 0; // can't read 0 bytes from the cache if (size == 0) - goto leave; + return 0; // overflow - if (size + offset < offset) { - err = EINVAL; - goto leave; - } + if (size + offset < offset) + return EINVAL; size_t nodesize = 0;