From 12a6963a5d8c6b382d42a12667cf1d0ac81b3f82 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 24 Dec 2018 23:24:49 +0100 Subject: [PATCH] Fix bug where Vnode kept its Inode alive indefinitely. --- Kernel/ProcFileSystem.cpp | 5 ++++- VirtualFileSystem/VirtualFileSystem.cpp | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Kernel/ProcFileSystem.cpp b/Kernel/ProcFileSystem.cpp index b636a68bed7..75c2c6c0482 100644 --- a/Kernel/ProcFileSystem.cpp +++ b/Kernel/ProcFileSystem.cpp @@ -368,7 +368,10 @@ ByteBuffer procfs$vnodes() path = static_cast(dev)->tty_name(); } } - ptr += ksprintf(ptr, "vnode %03u: %02u:%08u (%u) %s\n", i, vnode.inode.fsid(), vnode.inode.index(), vnode.retain_count(), path.characters()); + ptr += ksprintf(ptr, "vnode %03u: %02u:%08u (%u) %s", i, vnode.inode.fsid(), vnode.inode.index(), vnode.retain_count(), path.characters()); + if (vnode.characterDevice()) + ptr += ksprintf(ptr, " (chardev: %p)", vnode.characterDevice()); + ptr += ksprintf(ptr, "\n"); } *ptr = '\0'; buffer.trim(ptr - (char*)buffer.pointer()); diff --git a/VirtualFileSystem/VirtualFileSystem.cpp b/VirtualFileSystem/VirtualFileSystem.cpp index 30677464d06..4ec9829b545 100644 --- a/VirtualFileSystem/VirtualFileSystem.cpp +++ b/VirtualFileSystem/VirtualFileSystem.cpp @@ -198,6 +198,7 @@ void VFS::freeNode(Vnode* node) m_inode2vnode.remove(node->inode); node->inode.fs()->release(); node->inode = InodeIdentifier(); + node->m_core_inode = nullptr; } if (node->m_characterDevice) { m_device2vnode.remove(encodedDevice(node->m_characterDevice->major(), node->m_characterDevice->minor()));