diff --git a/kernel/src/fs/Mount.cpp b/kernel/src/fs/Mount.cpp index 950d492a..a62e8a62 100644 --- a/kernel/src/fs/Mount.cpp +++ b/kernel/src/fs/Mount.cpp @@ -13,7 +13,14 @@ Result> MountInode::create(SharedPtr source, S auto parent = TRY(source->find("..")); TRY(fs->set_mount_dir(parent)); + source->add_handle(); + g_mounts.append(inode.ptr()); return (SharedPtr)inode; } + +MountInode::~MountInode() +{ + m_source->remove_handle(); +} diff --git a/kernel/src/fs/Mount.h b/kernel/src/fs/Mount.h index 9cefc6f9..c239b849 100644 --- a/kernel/src/fs/Mount.h +++ b/kernel/src/fs/Mount.h @@ -137,7 +137,7 @@ class MountInode : public VFS::Inode, public LinkedListNode return m_mount_root_inode->replace_entry(inode, name); } - virtual ~MountInode() = default; + virtual ~MountInode(); private: SharedPtr m_source;