summaryrefslogtreecommitdiff
path: root/kernel/fs
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/fs')
-rw-r--r--kernel/fs/vfs.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c
index 666dfc9..7c97cb2 100644
--- a/kernel/fs/vfs.c
+++ b/kernel/fs/vfs.c
@@ -300,13 +300,12 @@ int vfs_close_process(process_t *p, int fd) {
assert(relist_remove(&p->file_descriptors, fd));
// If no references left then free the contents
if (0 == fd_ptr->reference_count) {
- if (fd_ptr->inode->close) {
- fd_ptr->inode->close(fd_ptr);
- }
-
assert(0 < fd_ptr->inode->ref);
fd_ptr->inode->ref--;
if (0 >= fd_ptr->inode->ref) {
+ if (fd_ptr->inode->close) {
+ fd_ptr->inode->close(fd_ptr);
+ }
kfree(fd_ptr->inode);
}
kfree(fd_ptr);